我有以下脚本调用http处理程序。它调用http处理程序,在fiddler中,我可以看到JSON正确返回,但是这个脚本总是在错误块中结束。我怎样才能确定出错了什么?
<script type="text/javascript">
function GetConfig() {
$.getJSON("http://localhost:27249/Handlers/GetServiceMenuConfiguration.ashx", function(d) {
alert("success");
}).success(function(d) {
alert("success");
}).error(function(d) {
alert("error");
}).complete(function(d) {
alert("complete");
});
}
</script>
答案 0 :(得分:4)
我看到您包含服务器名称(localhost
)和端口(27249
)。 Ajax请求由Same Origin Policy控制,CORS在正常情况下禁止跨源请求。 (如果您没有进行跨域通话,则不需要包含网址的http://localhost:27249
部分,这也是我认为您可能正在执行此操作的部分。)
如果浏览器支持跨域调用,并且服务器代码正确处理JSON-P请求,则可以执行跨源调用。或者,您可以查看使用{{3}}。
答案 1 :(得分:0)
JQuery的内置JSON解析器相当挑剔,即使格式良好,如果标头设置不完美,JSON有时也会失败。首先尝试使用type:text属性执行$ .ajax请求并记录响应。这将区分连接问题和解析问题。
$.ajax({
dataType:'text',
url: '/Handlers/GetServiceMenuConfiguration.ashx',
success: function(data) {
console.log(data.responseText);
}
});
如果问题是连接,并且您确实需要跨域请求JSON,那么您还可以使用像LAB,yep / nope或Frame.js这样的库加载器。