我有一个像这样的AJAX语句:
$.ajax({
type: "POST",
dataType: 'json',
url: "DBDeleteList.php",
data: {listID: listID},
success: function(html){
/* Succesfully Updated DB */
alert( 'Saved!' );
$(this).parents('li').remove();
$('#sortableLoader').load('index.php #sortableMenu');
}
});
它工作正常并激活PHP文件和所有内容,数据库修改正常工作。
唯一的问题是,即使成功,“成功:”部分也不会触发。
感谢您的任何提示。
答案 0 :(得分:4)
您有一个您没有看到的返回错误。你正在发布到php,但无论你在帖子后返回什么,你的ajax调用都不喜欢。在调试成功函数后包含类似的内容:
error: function (jqXHR, exception) {
if (jqXHR.status === 0) {
alert('Not connect.\n Verify Network.');
} else if (jqXHR.status == 404) {
alert('Requested page not found. [404]');
} else if (jqXHR.status == 500) {
alert('Internal Server Error [500].');
} else if (exception === 'parsererror') {
alert('Requested JSON parse failed.');
} else if (exception === 'timeout') {
alert('Time out error.');
} else if (exception === 'abort') {
alert('Ajax request aborted.');
} else {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
}
我也会用firebug帮助看看发生了什么
答案 1 :(得分:0)
仍然不明白ajax函数调用中引用的是什么$(this)
,这是我理解它所指的是什么,但我怀疑它有没有父母?
当您期望json数据时,为什么在成功处理程序中使用变量html
作为返回数据。
你确定这是一个错误的json导致解析错误的问题吗?
尝试省略数据类型并查看它返回的内容,并添加错误处理程序:
$.ajax({
type: "POST",
url: "DBDeleteList.php",
data: { listID: listID },
}).done(function(html) {
console.log(html);
}).fail(function(a,b,c) {
console.log('error'+'-=-'+a+'-=-'+b+'-=-'+c);
});
答案 2 :(得分:0)
在ajax调用之前创建指向相关元素的指针,否则成功中的“$(this)”指的是xhr响应。确保响应是正确的内容类型(application / json)。
var $el = $(this);
$.ajax({
type: "POST",
dataType: 'json',
url: "DBDeleteList.php",
data: {listID: listID},
dataType:"json",
contentType : 'application/json',
processData:false,
success: function(html){
/* Succesfully Updated DB */
alert( 'Saved!' );
$el.parents('li').remove();
$('#sortableLoader').load('index.php #sortableMenu');
}
});
同时验证响应的json是否有效。如果不满足其中任何一个,在大多数情况下它将无声地失败。
答案 3 :(得分:0)
在我的情况下,问题是拼写错误。我曾写过success
但sucess
。