2012-10-17 68 views
0

我有以下jQuery AJAX複製背景圖像。我很難理解如何有效地將信息返回到原始頁面。這裏是AJAX我上「'#dupBtn」的點擊發送...從jQuery AJAX調用返回信息併成功執行其他jQuery

//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?>'); 

回答

1

你可以用的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腳本返回ajax()方法的$ response變量的JSON表示。你已經配置了AJAX()方法來讀取響應的dataType爲JSON,所以它已經知道如何讀response參數......這意味着你的成功,函數可以是這個樣子:

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

感謝的信息 - 但我怎麼得到的PHP變量,「$ bgIDnew」回到AJAX頁面使用它在成功的jQuery? – Chris

+0

最好的辦法是使用PHP的函數'json_encode($ bglDnew)'並將結果回顯出來。然後在你的'success'函數中,你可以訪問'response'變量,它是PHP頁面的輸出。由於您已經指出dataType是'json',因此您可以將該'response'變量作爲JSON對象讀取。 –

+0

再次感謝 - 你能在你的答案中證明這一點嗎? – Chris

1

jQuery.ajax()success屬性,作爲一個回調,您可以使用。另一個是complete,如果請求成功或不成功,則被觸發。

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

您可以在成功回調函數的Ajax請求的寫上去的邏輯..

這時候成功返回一個Ajax請求被解僱..

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

添加這對你的ajax請求...