首页 > 解决方案 > 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')
        };

标签: javascriptjqueryvb.net

解决方案


推荐阅读