【问题标题】:JQuery AJAX, Error Status code: 200, Status Text: parserorro | OKJQuery AJAX,错误状态代码:200,状态文本:parserorro |好的
【发布时间】:2011-07-29 07:03:43
【问题描述】:

这是我所处的一个有趣的情况。 我正在使用 VS 2008 和 .Net Framework 3.5 开发一个 ASP.Net 网站,我想在测试页面中使用 jquery ajax,代码如下所示:

C# Method
[WebMethod]
public static string test()
{
    return "Server Response" ;
}

$(document).ready(function() {
    $("#myDiv").click(function() {
        $.ajax({
            type: "POST",
            url: "AjaxTest.aspx/test",
            data: "",
            contentType: "application/json;charset=utf-8",
            dataType: "json",
                        success: function(msg) {
                            // Replace the div's content with the page 
                            // method's return.
                            alert(msg.d);
                        },
                        error: function(result){ 
                            alert("error occured. Status:" + result.status  
                            + ' --Status Text:' + result.statusText 
                            + " --Error Result:" + result); 
                        }
           });
    });
});

所以当我像这样使用 Jquery 1.4.4 时:

我明白了:Status 200; Status Text: OK

当我使用 Jquery 1.5 时,我得到:Status 200; Status Text: Parsererror

所以我在 Visual Studio 中创建了一个新网站,将代码复制并粘贴到那里,它工作正常!!!!我无法弄清楚导致问题的原因。 我也使用了带参数的方法,设置数据:"{}",并完全删除数据,但似乎没有任何效果。

我不知道是否必须对我正在使用的 DevExpress 组件做任何事情。

我还找到了一个很好的答案,它正在使用这样的完整方法:

  complete: function(xhr, status) {
            if (status === 'error' || !xhr.responseText) {
                alert("Error");
            }
            else {
                var data = xhr.responseText;
                alert(data);
                //...
            }
        }

但我不知道它是否会正常工作,或者这种方法也可能存在其他问题。我也不知道如何从这里访问响应数据。 但我主要关心的是找出导致我网站问题的原因。

更新:今天在 Google Chrome 控制台中,我注意到 JQuery 1.5 存在一些语法问题 它们如下:

Uncaught SyntaxError: Unexpected token

【问题讨论】:

    标签: c# asp.net visual-studio-2008 jquery


    【解决方案1】:

    虽然 fiddler 是一个很棒的工具,但这个问题并不是那么容易解决的。

    我认为这里描述的问题,现在使用完整的事件。 有一些问题将在 jQuery 1.5.1 中解决 见:

    jQuery returning "parsererror" for ajax request

    因为它被张贴在那里,

    完成:功能(xhr,状态){ 如果(状态=='错误'||!xhr.responseText){ 处理错误(); } 别的 { var data = xhr.responseText; //... } }

    虽然有趣的是 - 当我查询亚马逊的服务时,这对我使用 jsonp 数据有效(亚马逊代码基于网络上的其他一些帖子,我也没有参考)ala:

    //resp 是自动完成响应的简单占位符,我需要在全局范围内调用它。 var 响应; 变量过滤器; $(文档).ready(函数 () { //http://completion.amazon.com/search/complete?method=completion&q=halo&search-alias=videogames&mkt=1&x=updateISSCompletion&noCacheIE=1295031912518 filter = $("#productFilter").autocomplete({ 来源:功能(请求,响应){ resp = 响应; $.ajax({ 网址:“http://completion.amazon.com/search/complete”, 类型:“获取”, 缓存:假, 数据类型:“jsonp”, 成功:函数(数据){ //data[1] 包含从服务返回的元素数组。 //使用 .map 枚举它们。 响应($.map(数据[1],函数(项目){ //调试器; 返回{标签:项目,值:项目,ID:项目} })) }, 数据: { q:request.term, “搜索别名”:“视频游戏”, MKT:“1”, 打回来: '?' } }); }, 最小长度:2, 选择:函数(事件,用户界面){ //$('#browseNode option:first').attr('selected', 'selected'); 警报(“选择”); }, 打开:函数(){ $(this).removeClass("ui-corner-all").addClass("ui-corner-top"); }, 关闭:函数(){ $(this).removeClass("ui-corner-top").addClass("ui-corner-all"); } }); }); //这是jsonp请求将调用的方法 函数 updateISSCompletion() { 警报('updateiss'); 响应(完成[1]); }

    【讨论】:

    • 对我来说非常奇怪的是,如果我在 VS 2008 中创建一个新网站,并将我的代码复制并粘贴到那里,它会正常工作。我不得不说我已经逐行检查了配置文件,但是我什么也找不到!!顺便说一句,我厌倦了 josnp,但它没有用 :(
    • 可能是因为jQuery版本的不同。
    • 不,它们是一样的!!我在两个项目上都尝试了 jquery 1.5 并得到了 parsererror。
    • 我遇到了同样的问题。我认为 JsonP 允许您从不同的域加载数据。我发现只有这个链接来帮助支持我的发现。 stackoverflow.com/questions/4683114/sending-jsonp-vs-json-data
    • 确实如此,我使用上面的 jsonp 来克服同源策略问题。
    【解决方案2】:

    您应该使用Fiddler - 出色的网络调试代理。在它的帮助下,您可以监视服务器和客户端之间的所有通信

    【讨论】:

      【解决方案3】:

      不确定这是否会有所帮助,但 ajax() API 指定他们已经更改了 success() 回调函数的返回对象。这是来自 jQuery API

      从 jQuery 1.5 开始,成功回调函数接收“jqXHR”对象(在 jQuery 1.4 中,它接收 XMLHttpRequest 对象)。但是,由于 JSONP 和跨域 GET 请求不使用 XHR,在这些情况下传递给成功回调的 jqXHR 和 textStatus 参数是未定义的。

      如果有帮助,你可以在这里找到它...

      jQuery $ajax API

      我遇到了类似的问题,无法从任何回调函数中提取 JSON 对象。

      【讨论】:

        【解决方案4】:

        我也有这个问题,但是在 PHP 中当我输入 'remote.php':

        `echo $msg`' 
        

        出现问题。当我使用json_encode():

        echo json_encode($msg);
        

        然后一切正常。

        这很奇怪,因为我从服务器收到状态为“OK”的响应,所以功能“成功”应该工作而不是“错误”。在“成功”中,我只有

        success: function(res){ console.log(res);}
        

        【讨论】:

          【解决方案5】:

          在我的情况下(使用“jquery 1.9.1”时),添加 dataType: "json" 解决了“parsererror”问题(我之前没有指定 dataType 并且出现了这个问题)。

          【讨论】:

            【解决方案6】:

            我也遇到过类似的问题。

            我用 POST 方法在 AJAX 中调用了一个 REST 服务并返回:

            参数[0] = 状态 200 (OK) |参数[1] = "解析错误" | arguments[2] = "无效的 JSON:"

            我的服务器方法返回了一个“void”值。例如,为了解决这个问题,我将其替换为布尔值。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-10-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-09-25
              • 1970-01-01
              • 2021-10-21
              • 2013-02-18
              相关资源
              最近更新 更多