我正在阅读有关此问题的几篇帖子,并对我的代码进行了一些更改,但没有运气。
任何人都可以看一下这个,看看这里发生了什么?或者也许是另一种方式来做我需要的东西(使用ziptastic检索城市,邮政编码状态)
代码在Chrome中运行良好(http://jsfiddle.net/7VtHc/117/
)
HTML
<asp:TextBox ID="txtZipCode" runat="server"></asp:TextBox>
<asp:TextBox ID="txtCity" runat="server"></asp:TextBox>
<asp:TextBox ID="txtState" runat="server"></asp:TextBox>
脚本
<script src="http://code.jquery.com/jquery-1.10.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(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);
}
});
}
});
});
</script>
谢谢,
答案 0 :(得分:9)
代码中的实际问题是在ajax错误回调中显示“No Transport”错误。添加此行 jQuery.support.cors = true ;会解决你的问题
在IE和其他浏览器中尝试以下代码。
<html>
<head>
<script type='text/javascript' src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function() {
jQuery.support.cors = true;
$("#zip").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) {
$("#city").val(result.city);
$("#state").val(result.state);
}
});
}
});
});
</script>
</head>
<body>
<p>Zip Code: <input type="text" id="zip" /></p>
<p>City: <input type="text" id="city" /></p>
<p>State: <input type="text" id="state" /></p>
</body>
</html>
查看以下链接:
答案 1 :(得分:6)
问题是IE8不支持Cross Origin Resource Sharing (CORS) XHR,因此您无法使用本机XHR或jQuery $.ajax
进行跨域ajax调用。
对于IE8,微软决定提出他们自己的跨域XHR,而不是使用名为XDomainRequest的CORS XHR,因此你必须实现它以支持IE8用户。可以在this answer中找到示例用法。
或者,您可以通过本地服务器端代理跨域请求,使外部请求成为服务器到服务器的情况,不受Same Origin Policy的限制。
答案 2 :(得分:0)
您的请求看起来很好,但如果它是IE8,那么您可能遇到了正在加载的文件头问题,它必须是application / json
PHP示例
header('Content-Type: application/json');
答案 3 :(得分:0)
非常简单,在页面上添加以下行:
<meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1" />