我有这样的代码:
$.ajax({
method: "GET",
url: page,
dataType: 'html',
data:data,
success: function(data){
console.log(data);
},
error: function(){
console.log('error');
}
});
使用Chrome或Firefox的调试程序,我可以看到请求成功,响应为200 OK,响应包含预期数据。 但问题是,没有任何回调会引发任何回调。 "成功"不开火也不开错#34;错误"。此外,也没有延迟方法,例如"完成","然后",或"始终"。
过去几个小时我一直试图解决这个问题无济于事。我完全失败了。我也尝试过使用诸如" $。get"等方法。结果相同。
简而言之,我得到了响应,但是jQuery中的代码没有触发任何回调,并且在控制台中没有任何可见错误。
答案 0 :(得分:1)
我在代码中看到错误的一件事是:
method: "GET",
应该是:
type: "GET",
我在jQuery doc中看不到method
的任何文档属性。 type
属性应默认为"GET"
,因此这可能不是唯一的错误。
此外,有些情况下,即使ajax调用失败(在跨域请求中),也不会调用error
回调。来自error
回调的jQuery文档:
不会为跨域脚本和跨域JSONP请求调用此处理程序。
这是因为jQuery期望服务器发回特定形式的javascript,如果服务器没有做出预期的事情,那么jQuery永远不会知道请求何时返回并且无法处理它
在这些情况下,您经常需要弄清楚在调试器中查看网络跟踪时可能出现的问题。
要检查的其他事项,以确保您不会意外跨域:
www.
而另一个没有。http
或https
。答案 1 :(得分:0)
以下代码有效。另请注意,AJAX不适用于跨站点脚本。 如果您想获得错误,可以打印" errorThrown"
<script>
$(document).ready(function () {
$('#getLink').on("click", function () {
var url = $("#myUrl");
alert(url.val());
$.ajax({
type: "GET",
url: url.val(),
dataType: 'html',
success: function (data, textStatus, xhr) {
$("#data").text(textStatus);
},
error: function (data,textStatus, errorThrown){
$("#data").text(errorThrown);
}
});
});
});
</script>
<input id="myUrl" name="myURL" type="text" value="http://localhost:35460/Home/TestPage.cshtml" />
<input type="button" value="getLink" id="getLink">
<span id="data"></span>