javascript - jQuery $.post 后 Web 方法未触发(500 错误)
问题描述
我有一个 jquery 帖子,每当我尝试执行特定的 webmethod 时都会返回 500 错误。我已经测试了我的通话帖和我试图调用的实际功能,并且两者都可以工作。我不确定为什么在我的其他 webmethods 上没有发生此错误时收到此错误。
我运行的测试: 1) 检查 webmethod 是否不正确:我从代码隐藏中调用了 webmethod,它运行得很好。
2) 检查我是否在 .post 中错误地调用了 webmethod:我更改了 URL 以调用不同的函数并且它起作用了。
3) 断点:我在所需函数中放置的断点不会触发,但是当我用相同的 .post 测试其他 webmethods 时,它们会触发。
我的 Site.js 上有什么:
$('#result-table').on('click', '.delete-user-button', function () {
//var temp = JSON.stringify($(this).data('userid'));
var obj = {
recordId: $(this).data('userid')
};
$.post({
url: '/svc/webmethods.aspx/Delete_User_Group',
data: JSON.stringify(obj),
dataType: 'json',
contentType: "application/json; charset=utf-8",
})
})
我的 webmethod.aspx.vb 上有什么
<WebMethod()>
Public Shared Function Delete_User_Group(form As String) As BooleanResponse
Try
Dim response As New BooleanResponse()
Dim formFieldList = Get_FormFieldsAsList(form)
Dim RecordId As String = formFieldList.First.value
Dim user As New UserMembership(SiteUtils.DefaultConnectionString)
user.RecordId = RecordId
user.Delete()
If user.IsDeleted Then
response.IsSuccess = True
Else
response.IsSuccess = False
response.Message = "Failed to Delete User"
End If
Dim group As New UserMembership(SiteUtils.DefaultConnectionString)
group.RecordId = RecordId
group.Delete()
If group.IsDeleted And response.IsSuccess = True Then
response.IsSuccess = True
Else
response.IsSuccess = False
response.Message += " Failed to Delete Group"
End If
Return response
Catch ex As Exception
HttpContext.Current.Response.StatusCode = 500
HttpContext.Current.Response.StatusDescription = ex.Message
Return Nothing
End Try
End Function
我期待 Delete_User_Group webmethod 触发允许我运行指令。
我收到此错误:加载资源失败:服务器响应状态为 500(内部服务器错误)[/svc/webmethods.aspx/Delete_User_Group]
编辑 1: 我更新了代码以删除我的 jquery 处理程序中的双字符串化。不幸的是,我仍然收到 500 错误。
编辑 2:我进行了更多测试,并能够启动我的 webmethod。我通过摆脱我传递的参数来做到这一点。
$.post({
url: '/svc/webmethods.aspx/Delete_User_Group',
dataType: 'json',
contentType: "application/json; charset=utf-8"
})
...
Public Shared Function Delete_User_Group() As BooleanResponse
我已经研究了一段时间,无法弄清楚如何正确地将参数传递给我的 webmethod。对于所有其他网络方法,我一直在做同样的事情,我很困惑为什么这不起作用。
回答:终于找到错误了,超级初学者,所以我有点尴尬。
错误是因为我使用的 .post 发送了一个字段名称为“recordID”的对象,而 webmethod 期望参数以“form”的形式出现
Site.js:
var obj = {
recordId: $(this).data('userid')
};
webmethod.aspx.vb:
Public Shared Function Delete_User_Group(form As String) As BooleanResponse
最后,我将 JSON 对象字段更改为:
Site.js:
var obj = {
form: $(this).data('userid')
};
解决方案
推荐阅读
- c# - 使用 UI 按钮和滚动视图问题的 Unity 滑动功能
- python - 与python精确字符串匹配的布尔值
- jenkins - 尝试在 Jenkins 管道上执行 Sonarqube 时,我收到“项目根配置文件:无”日志消息
- java - 将基于 Java 的 Windows 服务迁移到 Azure
- r - 我无法在 R 中安装 zenplots 包?
- c - 填充矩阵的主对角线
- apache-spark - 在 Spark 中检查组的开始、中间和结束
- singularity-container - Singularity recipe 的 %files 部分不直观地将文件复制到错误的绑定位置
- python - 字符串对象不能解释为整数
- python - GF(256) 中的快速稀疏矩阵点乘法与 Scipy.Sparse