我有一个需要三个不同的帖子请求来同步数据的应用程序,我只希望在完成所有三个时发生一件事,但是当jquery不工作时。所有帖子都使用success函数来处理服务器发回的数据。这是我的代码:
var picUploads = $.post("http://www.epcmapp.co.za/php2/uploadPic.php", {Images: jsonPics}, function (res) {
alert("Ajax Images return");
if(res != "" && res != "53554343455353")
alert(res);
});
var pdfUploads = $.post("http://www.epcmapp.co.za/php2/uploadPDF.php", {PDFs: jsonPDF}, function (res) {
alert("Ajax PDF return");
if(res != "" && res != "53554343455353")
alert(res);
});
var sync = $.post("http://www.epcmapp.co.za/php2/sync.php", {data: json}, function (res) {
alert("Ajax return");
var result = JSON.parse(res);
dropSyncTables();
checkDB();
for (var i in result) {
populateDB(result[i].toString());
}
readDB();
loadProjects();
loadAdditional();
loadProcessRows();
loadAttachments();
});
$.when(picUploads, pdfUploads, sync).then(function() {
$("#loadIcn").attr("src", "images/check3.png");
});
帖子中的警报不会弹出,然后jquery中的代码永远不会运行。那我该怎么办呢?
答案 0 :(得分:1)
如果您需要失败功能,则无法使用$ .get或$ .post函数;你需要直接调用$ .ajax函数。你传递了一个可以拥有"成功"的选项对象。和"错误"回调。
而不是:
$.post("/post/url.php", parameters, successFunction);
你会用这个:
$.ajax({
url: "/post/url.php",
type: "POST",
data: parameters,
success: successFunction,
error: errorFunction
});
还有很多其他选择。文档列出了所有可用选项 的 ref This answer 强>
答案 1 :(得分:0)
首先检查您的console.log
。你可能会在那里找到问题。但是,即使你找到了它,你总是会想要某种错误处理,这可能与被保护的对象有关:
$.when(picUploads, pdfUploads, sync)
.then(function() {
$("#loadIcn").attr("src", "images/check3.png");
})
.fail(function(ts) {
alert('something failed');
console.log(ts.responseText); //Check in console what went wrong here
})
也可以将done()
和fail()
与$.post
一起使用(从jQuery 1.5开始)
var picUploads = $.post("http://www.epcmapp.co.za/php2/uploadPic.php", {Images: jsonPics}, function (res) {
alert("Ajax Images return");
if(res != "" && res != "53554343455353")
alert(res);
})
.done(function() {
alert( "second success" );
})
.fail(function() {
alert( "error" );
});