Ajax调用在IE8中不起作用

我正在阅读几篇有关此内容的post,并对我的代码进行了一些更改,但没有运气。

任何人都可以看看这个,看看这里发生了什么? 或者也许是另一种方式来做我需要的事情(使用ziptastic通过邮政编码检索城市,州)

该代码在Chrome中运行良好( http://jsfiddle.net/7VtHc/117/

HTML

    

脚本

   $(function () { $("input[id$='txtZipCode']").keyup(function () { var el = $(this); if (el.val().length === 5) { $.ajax({ url: "http://zip.getziptastic.com/v2/US/" + el.val(), cache: false, dataType: "json", type: "GET", success: function (result, success) { $("input[id$='txtCity']").val(result.city); $("input[id$='txtState']").val(result.state); } }); } }); });  

谢谢,

问题是IE8不支持跨源资源共享(CORS) XHR,因此您无法使用本机XHR或jQuery的$.ajax跨域ajax调用。

对于IE8,微软决定提出他们自己的跨域XHR,而不是使用称为XDomainRequest的CORS XHR,因此你必须实现它以支持IE8用户。 在这个答案中可以找到一个示例用法。

或者,您可以通过本地服务器端代理跨域请求,使外部请求成为服务器到服务器的情况,这将不受同源策略的约束。

您的代码中的实际问题是在ajax错误回调中显示“No Transport”错误。 添加此行jQuery.support.cors = true ; 会解决你的问题

在IE和其他浏览器中尝试以下代码。

        

Zip Code:

City:

State:

看看这些链接:

  1. CORS
  2. 没有传输错误

您的请求看起来很好,但如果它是一个IE8,那么您可能遇到了正在加载的文件头问题,它必须是application / json

PHP示例

 header('Content-Type: application/json');