Javascript 有些命令不';t在ajax完成或成功后执行
在ajax完成或成功后的下面代码中Javascript 有些命令不';t在ajax完成或成功后执行,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,在ajax完成或成功后的下面代码中$(“.cdmodels”).append(结果)不执行,但执行下两行。我检查了不同的方法,但它没有解决。请帮帮我 $('.load-more').on('click', function (e) { e.preventDefault(); var count = $(this).attr('data-value'); var btn = $(this).button('loading'); $.ajax({ ur
$(“.cdmodels”).append(结果)代码>不执行,但执行下两行。我检查了不同的方法,但它没有解决。请帮帮我
$('.load-more').on('click', function (e) {
e.preventDefault();
var count = $(this).attr('data-value');
var btn = $(this).button('loading');
$.ajax({
url: "@Url.Action(MVC.Library.Index())",
data: { count: count },
dataType: 'json',
async: true,
method: 'POST',
complete: function (result) {
$(".cdmodels").append(result);
btn.button('reset');
btn.attr("data-value", parseInt(count) + 1);
}
});
});
更新:
浏览器调试:
您是否使用try/catch块检查过它
...
complete: function (result) {
try{
$(".cdmodels").append(result);
btn.button('reset');
btn.attr("data-value", parseInt(count) + 1);
}catch(e) {
console.log("Something went wrong! Watch for 'e' and 'result'");
debugger;
}
}
...
从打开devtools开始。调用complete
将接收一个具有多个属性的对象。您不能直接使用它来更新DOM。如果需要,可以使用responseText
属性
这应该行得通
$(".cdmodels").append(result.responseText);
或者更好地使用done()
回调函数
$.ajax({
url: "@Url.Action("Index")",
data: { count: 2 },
method: 'POST'
}).done(function (res) {
console.log('done');
$(".cdmodels").append(res);
});
从jQuery 3.0开始,将删除jqXHR.success()
、error()
和complete()
回调。您应该使用jqXHR.done()
,fail()
,和always()
。通常在处理AJAX调用时,如果遇到问题,应按如下所示进行调试
记录响应<代码>控制台日志(响应)
检查响应类型<代码>控制台.log(Object.prototype.toString.call(response)
检查
cdmodels
元素是否存在。是否尝试使用浏览器调试代码?出现了什么错误?执行下两行,因为这两行不取决于ajax调用的结果。这似乎是ajax调用响应的问题。尝试调试应用程序,并检查结果是否符合要求r不存在。我可以用我的浏览器调试代码。它不会返回任何错误,但append
命令不会添加result
数据。如果返回的数据是json,那么我想你必须使用json解析。var message=json.parse(data);对于ajax调用,Index
action方法返回什么?HTML标记还是JSON?再次感谢,先生。实际上,这是为了诊断问题。不客气。啊,我刚刚意识到,诊断您描述的问题还不够,因为没有例外。:)
$('.load-more').on('click', function (e) {
e.preventDefault();
var count = $(this).attr('data-value');
var btn = $(this).button('loading');
$.ajax({
url: "@Url.Action(MVC.Library.Index())",
data: { count: count },
dataType: 'json',
async: true,
method: 'POST',
complete: function (result) {
// In your case it should be result.responseText
$(".cdmodels").append(result.responseText);
btn.button('reset');
btn.attr("data-value", parseInt(count) + 1);
}
});
});