簡體   English   中英

從jQuery AJAX調用返回信息,並在成功執行其他jQuery

[英]Return info from jQuery AJAX call and execute additional jQuery on success

我有以下jQuery AJAX復制背景圖像。 我對如何有效地將信息返回到原始頁面感到困惑。 這是我通過點擊“'#dupBtn”發送的AJAX ...

//DUPLICATE BACKGROUND      
$('#dupBtn').click(function() {
    jQuery.ajax({
            type: "POST",
            dataType:'json',
            url: "../system/bgUpdate.php",
            data: {
                "user":<?= $_POST['user'] ?>,
                "bgID":bgID,
                "refID2":<?= $_POST['refID2'] ?>,
                "refTable":"<?= $_POST['refTable'] ?>",
                "bgTitle":($('#bgTitle').val()),
                "path":path,
                "bgColor":bgColor,
                "bgPoz":bgPoz,
                "bgRepeat":bgRepeat,
                "attach":attach
                }
        });
});

這是PHP頁面bgUpdate.php上的基本MySQL查詢。

mysql_query("INSERT INTO backgrounds (user,title,path,bgColor,bgPosition,bgRepeat,bgAttachment) VALUES ('".$_POST['user']."','$title','".$_POST['path']."','$bgColor','".$_POST['bgPoz']."','$rt','$attach')");

$bgIDnew = mysql_insert_id();

我要做的是在成功執行MySQL條目后在原始頁面上觸發以下代碼,以動態捕獲MySQL PHP頁面中的“ $ bgIDnew”。

$('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=<?=$bgIDnew?>');

jQuery.ajax()具有success屬性,可以用作您可以使用的回調。 另一個complete的請求是否成功將被觸發。

jQuery.ajax({
  /* your stuff here */
  success: function(response) {
    $('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=<?=$bgIDnew?>');
  }
});

您可以在ajax請求的成功回調函數中編寫邏輯。

成功返回ajax請求時將觸發此事件。

success: function(response) {
    $('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=<?=$bgIDnew?>');
  }

將此添加到您的ajax請求中...

您可以使用.ajax()函數的success屬性來完成此操作:

$('#dupBtn').click(function() {
    jQuery.ajax({
        type: "POST",
        dataType:'json',
        url: "../system/bgUpdate.php",
        data: {
            ...
            },
        success:
            function(response)
            {
                $('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=<?=$bgIDnew?>');
            }
    });
});

不過,這只是其中的一部分...另一半是您的PHP需要返回一些jQuery可以理解為“成功”的調用。 我的偏好是使用HTTP狀態代碼。 對於您而言,如果成功,PHP腳本應返回200代碼; 否則,它將返回400范圍內的值。 (順便說一句,如果您希望jQuery對錯誤進行單獨處理,則可以使用.ajax()error屬性。)

但是,如果您需要將數據從服務器返回到客戶端腳本,那么您的PHP可以打印出如下信息:

mysql_query("INSERT INTO backgrounds (user,title,path,bgColor,bgPosition,bgRepeat,bgAttachment) VALUES ('".$_POST['user']."','$title','".$_POST['path']."','$bgColor','".$_POST['bgPoz']."','$rt','$attach')");

$bgIDnew = mysql_insert_id();
// Best practice to keep it in some sort of understandable format
// Here, we'll put it in an associative array:
$response = array('id' => $bgIDnew);
print_r(json_encode($response));

該PHP腳本將$ response變量的JSON表示發送回ajax()方法。 您已經配置了ajax()方法來將響應數據類型讀取為JSON,因此它已經知道如何讀取response參數...這意味着您的成功函數可以如下所示:

success:
    function(response)
    {
        $('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=' + response.id);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM