jQuery ajax无法在IE上远程工作

时间:2009-08-19 03:16:17

标签: jquery ajax parse-error

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

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

我发现奇怪的是,如果我启动提琴手,那么IE将远程工作,否则,我得到parsererror。

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

$.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); }
    });

编辑:添加了代码段。

5 个答案:

答案 0 :(得分:1)

它已经分类了。感谢。

在服务器端,在我们调用了context.Response.Write('我们的json数据')之后,我们调用了context.Response.Flush()和context.Response.Close()。删除.Flush()和.Close()之后,一切都重新开始了。但是我仍然无法解释为什么它适用于Firefox而不是IE,也不能解释为什么小提琴手神奇地让它适用于IE。

谢谢。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

尝试使用

contentType: 'application/json',

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

在我的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!
....