Jquery Ajax对Web服务的调用失败

时间:2009-05-28 17:28:07

标签: asp.net jquery ajax web-services

有人可以帮忙吗?我有一个从jquery调用asp.net webservice的问题..实际上我认为它可能是jquery ...因为我有一个断点而且它没有到达web服务..

这是我的jquery,webservice方法接受2个参数......

所以我设置了一个简单的测试来传递7和7 ..我尝试用“测试”一词替换它也不起作用..

基本上在错误功能中显示“抱歉发生错误”,但错误未定义。

jQuery.ajax({
            type: 'POST'
            , url: 'CallService.asmx/TempCanMakeCall'
            , contentType: 'application/json; charset=utf-8'
            , dataType: "json"
            , data: "{'reservationNum':'7','completedReservationNum':'7'}"
            , success: function(data, status) {
                alert(data);
            }
            , error: function(xmlHttpRequest, status, err) {
                alert('Sorry! Error happens.' + err);
            }
    }
        );

这是asp.net webservice

[WebMethod()]
    public bool TempCanMakeCall(string reservationNum, string completedReservationNum )
    {

            return true;
    }

4 个答案:

答案 0 :(得分:2)

xmlHttpRequest.responseText在处理jQuery AJAX错误时一直是我的转到。

尝试将ASP.NET函数设为静态:

[WebMethod()]
public static bool TempCanMakeCall(string reservationNum, string completedReservationNum )
{

        return true;
}

另请注意,返回的JSON值封装在名为“d”的对象中(特定于ASP.NET。)要在成功时显示返回值,您需要执行以下操作:

success: function(data, status) {
            alert(data.d);
        }

答案 1 :(得分:1)

jquery ajax调用看起来很好。我认为你需要确保“CallService.asmx”的路径是正确的。现在的方式,只有在进行jQuery调用的文件与ASMX位于同一个虚拟目录中时,我才会工作。

答案 2 :(得分:0)

在错误回调函数中,您可以检查'xmlHttpRequest.status'以获取从服务器返回的http代码。这可能会给你另一个线索。如果上面的ichiban是正确的,它应该是404。

答案 3 :(得分:0)

您可以查看xmlHttpRequest.responseText属性。响应文本很可能是服务器返回的包含错误原因的html文档。

如果您使用的是Visual Studio,还可以在Internet Explorer中启用脚本调试,并在错误函数中添加以下关键字:debugger。浏览器将此视为断点,并将调用调试器(应为Visual Studio)。现在,您可以检查xmlHttpRequest实例的全部内容。

为清楚起见,您的错误功能将如下所示:

function(xmlHttpRequest, status, err)
{
    debugger;
    ...rest of your function...
}