如何在成功回调的帖子上使用jquery

时间:2016-02-06 07:19:09

标签: javascript jquery ajax

我有一个需要三个不同的帖子请求来同步数据的应用程序,我只希望在完成所有三个时发生一件事,但是当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中的代码永远不会运行。那我该怎么办呢?

2 个答案:

答案 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" );
});