【问题标题】:jQuery ajax not working remotely on IEjQuery ajax 不能在 IE 上远程工作
【发布时间】:2010-11-20 19:49:00
【问题描述】:

我在客户端上有一些代码使用 $.ajax() 调用 ashx 处理程序并期望来自服务器的 json 数据。当我在本地网络服务器上运行应用程序时,在 FF、IE 6、7、8 上一切正常。但是,当我将应用程序部署到远程测试服务器时,IE 停止工作($.ajax 返回解析器错误),而 FF 继续按预期工作。

我的第一个想法是我的 json 对象必须有一个 IE 讨厌的逗号,但这不是问题,因为没有试用逗号。然后,我尝试将内容类型从 app/json 更改为 tex/plain 等各种内容,仍然是同样的错误。

我发现奇怪的是,如果我启动 fiddler,那么 IE 将远程工作,否则,我会收到解析器错误。

以前有没有人经历过这样的事情?谢谢。

$.ajax({
        type: "GET",
        url: "handlers/GetAsyncResults.ashx",
        contentType: "application/json; charset=utf-8",
        data: {'from': dateFrom, 'to': dateTo, 'accountId' : aId, 'page': currentPage, 'sortField' : sortField, 'sortDirection' : sortDirection},
        dataType: "json",
        success: function(data) { GetAsyncResultsEnd(data); },
        error: function(x, y, z) { GetAsyncResultsErrorHandler(x, y, z); }
    });

编辑:添加代码 sn-p。

【问题讨论】:

  • 您能插入客户端代码的 sn-p 吗?
  • 尝试附加 ?r=9028374(一些随机字符串)以确认它没有缓存。
  • ashx 处理程序是否与调用它的文档在同一台服务器上?
  • 绝对没有缓存。一切都在同一个服务器/域上。谢谢。

标签: jquery ajax parse-error


【解决方案1】:

在我的 ashx.cs 方法中,我必须注释掉 Flush() 才能使其正常工作。

在此之前,我的 json 格式正确,一切似乎都可以正常工作,但 JavaScript(JQuery .ajax POST 调用)不会返回任何内容,FireBug 不会报告错误,控制台也不会报告错误,没有。这一切都在本地工作(在 Visual Studio 中),但当一切都在服务器上时就不行了。

//code from the ashx.cs file...
//...after populating the response, resp:

JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
String json = jsonSerializer.Serialize(resp);

r.Write(json);
//r.Flush();  /////commented out!  It returns to the .js file correctly!
....

【讨论】:

    【解决方案2】:

    您是否尝试过简单地删除数据类型:“json”

    我遇到了同样的问题并删除它修复了它。删除允许 jQuery “智能地将 responseXML 或 responseText 传递给您的成功回调”。

    【讨论】:

      【解决方案3】:

      已排序。谢谢。

      在服务器端,我们调用 context.Response.Write('Our json data') 之后,我们再调用 context.Response.Flush() 和 context.Response.Close()。在我们删除 .Flush() 和 .Close() 之后,一切又开始工作了。但我仍然无法解释为什么它适用于 firefox 而不是 IE,也无法解释 fiddler 如何神奇地使其适用于 IE。

      谢谢。

      【讨论】:

        【解决方案4】:

        尝试使用

        contentType: 'application/json',
        

        【讨论】:

          【解决方案5】:

          在 JSON 无效之前唯一给我一个解析错误的东西。您说您检查了尾随空格,但尝试通过 - JSON Lint 运行您的 json。这对我来说效果很好。有趣的是,提琴手有帮助。

          【讨论】:

          • 刚试过 Json Lint,我的 jsons 根据网站是有效的。谢谢。
          • 两件事 - 你能发布一个 JSON 响应的例子吗?而且我没有使用过JQuery 的json 类型。我总是将文本通过 Crockfords JSON.parse 运行。看看使用该方法时问题是否仍然存在会很有趣 - 但也许 JQuery 正在使用他的 JSON 解析器。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多