【问题标题】:Ajax call. Always return error阿贾克斯电话。总是返回错误
【发布时间】:2011-10-20 11:29:23
【问题描述】:

与 ajax 调用叠加。 我总是出错。我试图从服务器 ArrayList 返回,因为我的一些项目中有一些方案。但结果是一样的。 Json 是有效的。 Staus 200 OK 和永久错误。

这是我的客户端代码

$.ajax({
        type: "POST",
        url: "services.aspx/GetHexString",
        data: "{'strGetParamsString':'LYALYA'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            alert(msg.d);
        },
        error: AjaxFailed
    });  

服务器端逻辑:

[WebMethod]
    public static string GetHexString(string strGetParamsString)
    {
        return "HI";
    }

Firebug 显示 200 OK 状态。结果是 {"d":"HI"} http://jsonlint.com/ 表示 json 是有效的。

怎么了?

【问题讨论】:

  • jQuery当前版本是1.6.4 - 建议你升级一下。
  • 我知道 :) 但这个版本支持 ajax,这不是原因。我尝试使用多个版本,结果相同。
  • {"d":..} 来自哪里? Hi 本身不是有效的 JSON。
  • @FelixKling {"d":...} 来自使用 ASP.NET 脚本服务。在返回 JSON 对象之前,运行时会自动将结果包装在“d”属性中。这是正常的。
  • @njreed.myopenid.com:好的,谢谢。

标签: jquery ajax json web-services


【解决方案1】:

要获取有关错误的更多信息,请将参数添加到错误回调函数中。来自 jQuery 文档:

错误(jqXHR,textStatus,errorThrown)

errorThrown 将包含一些信息。

【讨论】:

  • 添加了这个警报(jqXHR + "\n" + textStatus + "\n" + errorThrown);并得到 textStatus = error, erroThrown = undefined
  • 可能是1.3.2版本的回调函数不同,errorThrown应该在最新版本中定义。
【解决方案2】:

在这里尝试了您的代码,它工作正常。您是否在错误回调中添加了文本以显示错误?

error: function (jqXHR, textStatus, errorThrown) {
  alert(textStatus);
  alert(errorThrown);
}

【讨论】:

  • 您在 erroThrown 中有错字。它不应该是未定义的。尝试使用我在此处发布的代码。
  • 我已将 jQuery 版本更改为最新版本,它现在可以工作,但只能在 firebug 调试模式下使用。在实时模式下我有一个错误: textStatus: error errorThrown: nothing (null)
  • 这听起来很奇怪。如果它在关闭萤火虫的情况下工作,您可以尝试使用 Fiddler 来检查流量。我还建议在另一个浏览器中进行验证。如果您可以发布 jsFiddle,其他用户可以验证它是否适合他们。
  • 伙计们,asyn: false 选项即使使用 1.3.2 也解决了我的问题。现在我必须明白为什么???谢谢大家的好建议。
【解决方案3】:

error_reporting(0); 添加到您的php 页面顶部。如果您碰巧有一个未定义的变量或者您有error_reporting,则返回的json 数组会弄乱数组数据。我不知道这方面的所有详细信息,但它对我有用。

【讨论】:

    猜你喜欢
    • 2011-05-23
    • 2015-06-05
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 2018-07-04
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多