[英]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.