2011-04-28 99 views
1

我提出以下的JQuery(V1.5.1)Ajax调用:为什么以下JQuery Ajax调用会导致IE9中的脚本错误?

function testAjaxCall() 
{ 
    $.ajax(
    { 
     url: "/Search.ashx?", 
     dataType: "json" 
    }); 
} 

这个调用返回以下JSON结果:

{ "objectData" : "100" } 

但在IE9失败,出现以下错误(它工作正常在其他浏览器中):

SCRIPT1004:预期';' debug.finance.com,line 1 character 16

如果我删除dataType:json参数,则调用成功。任何想法有什么不对?我假设我的JSON不正确,但我通过验证程序传递了它,但没有报告任何错误。

请帮忙!

编辑:(详细)在ASP.NET HTTP处理程序

I输出JSON从服务器如下:

public void ProcessRequest(HttpContext context) 
{ 
    context.Response.ContentType = "application/json"; 
    context.Response.Write("{ \"objectData\" : \"100\" }"); 
    return; 
} 
+0

是那你的js包含在哪里:debug.fin24.com,因为这是错误来自 – ezmilhouse 2011-04-28 09:36:22

+0

你试过执行严格的json吗?在其中添加' “'所有'里面的数据:'像这样'?” 文化“: ”AF“, ”的queryString“: ”Naspers公司“, ”的pageSize“:10, ”的PageIndex“:0' ? – ianace 2011-04-28 09:37:19

+0

恐怕是主页,包含了“文档类型”上线,所以我假定系NR所指的可能是什么地方执行的动态脚本。 – willem 2011-04-28 09:37:40

回答

1

你使用JSON编码在你的服务器端脚本或你是否只是自己“建造”?

当我第一次开始摆弄JSON时,我错误地认为你可以创建一个包括卷曲和方括号,冒号之类的字符串。当我使用浏览器开发工具检查XHR时,看起来一切正常,除了正在接收的是一串字符而非对象。

后来我了解到的事实,你可以得到你的数据在服务器端,并使用(例如PHP) json_encode() 编码数据,然后你可以使用jQuery的数据类型JSON作为你已经完成了,来解析返回的Javascript对象。

这不完全相同的问题,但我的问题here应提供更多的背景信息,以了解发生了什么。

+0

我建立我的JSON通过手在服务器端。我使用ASP.NET和做的Response.Write到HTTP上下文,我得看看你的帖子,谢谢。 – willem 2011-04-28 09:51:05

+0

我不熟悉ASP .NET,但我会希望有一个标准的编码功能,试图找到它 - 它会为你节省调试的几个小时,如果你的handbuilt JSON格式不正确 - 这是你知道的非常敏感;)有一件事我忘了提的是第三点。在答案中关于设置标题文本类型也很重要。 – T9b 2011-04-28 10:13:01

+0

我尝试使用JSON.Net,这显然非常好。最后,我得到了类似的JSON,但我仍然必须以字符串形式返回。棘手。所以没有运气。我下载的JQuery源代码,试图查明错误... – willem 2011-04-28 10:45:20

0

这里的底层问题是IE9不支持AJAX上的JSON。相反,对于那个浏览器,你需要使用JSON-P。

参见:JavaScript: How do I create JSONP?

在客户端,如下更改数据类型:

// Fall back to JSON-P for IE9 and lower: 
dataType: (('withCredentials' in new XMLHttpRequest()) ? 'json' : 'jsonp'),   

在服务器端,你发出JSON之前,这样做:

// In JSON-P mode, wrap the JSON with the callback name and brackets: 
if (isSet ($_GET['callback']) && preg_match ('/^([_a-zA-Z0-9])$/', $_GET['callback'])) { 
    $json = $_GET['callback'] . '(' . $json . ');'; 
} 
相关问题