在ajax调用之前运行javascript函数

Running an javascript function before an ajax call

本文关键字:运行 javascript 函数 ajax 调用      更新时间:2023-09-26

我想运行第一个ajax调用时,它已经完成运行函数"saveToFile()",之后已完成运行第二个ajax调用。似乎不能按编码工作。我是ajax的新手,所以我对这个有点吃力。

// save composition to database 
$.ajax({ 
    type: "POST", 
    url: "_inc/save_to_db.php", 
    data: {jsonStr: canvasStr}, 
    success: function(data) {
            // this saves the comp to the _comps folder on the server as a jpeg file (firth.js)
            saveToFile();
            $.ajax({
            type: "POST".
            url: "_inc/generate_thumbnail.php",
            data: {imgFile: "<?php echo $_SESSION['UserID'] ?>_<?php echo $_SESSION['CompID'] ?>.jpg"},
            });
        }
    });

适合我:http://jsbin.com/upujur/2/edit

问题可能出在这行中用点而不是逗号:

type: "POST".

你是否使用像FireBug或Developer Tools这样的JavaScript控制台来调试你的程序?

您可以让saveToFile函数接受一个回调参数,该回调将在它执行的AJAX调用完成后执行。例如:

$.ajax({ 
    type: "POST", 
    url: "_inc/save_to_db.php", 
    data: {jsonStr: canvasStr}, 
    success: function(data) {
        // this saves the comp to the _comps folder on the server as a jpeg file (firth.js)
        saveToFile(function(result) {
            $.ajax({
                type: "POST",
                url: "_inc/generate_thumbnail.php",
                data: {imgFile: "<?php echo $_SESSION['UserID'] ?>_<?php echo $_SESSION['CompID'] ?>.jpg"},
            });
        });
    }
});

和您的saveToFile函数现在可能看起来像这样:

function saveToFile(successCallback) {
    $.ajax({
        url: ...,
        type: ...,
        data: ...,
        success: successCallback
    });
}