2011-01-08 92 views
3

我試圖以如下方式使用$。員額():

$.post("file.php", { file_id: $(this).val()}, function(data){...}file.php然後做一個數據庫查詢與和標題返回數組,說明和圖像參考。

我想要做的是能夠更新每個表單域的.val()。我知道如何做到這一點的一個變量,這純粹是以下幾點:

$.post("file.php", { file_id: $(this).val()}, function(data){ 
    $('#title').val(data); 
} 

但是,如何獲取返回的數據是jQuery中的任一單獨的變量或爲數組可識別?

在此先感謝

回答

7

the docs for $.post。第四個參數是dataType。您可以將其設置爲JSON,以便將返回數據解析爲JavaScript對象或數組。

$.post(
    "file.php", 
    { file_id: $(this).val() }, 
    function(data){ $('#title').val(data.title); $('#para').val(data.paragraph); }, 
    'json'); 

在你的file.php文件,你可以這樣做

<?php 
$return_data=array('title'=>'Fishes Go To Market','paragraph'=>'Lots of stuff'); 

header('Content-Type: application/json'); 
echo json_encode($return_data); 
exit(); 

一定要包括頭(),所以jQuery的知道你的數據應該是JSON,並json_encode所以使用它格式正確。

查看json_encode文檔瞭解更多信息,以及docs on header。記住你不能有任何其他輸出在你的header()和打印json_encoded數據之前出現,否則頭和JSON都是無效的。

+0

完美工作,但我認爲你的代碼有一個錯字($ return_data || $ return_array)謝謝! – TH1981 2011-01-08 22:15:45

3

最簡單的方法是將值作爲JSON傳回。您需要將您的陣列轉換爲服務器上的JSON(有很多server-side libraries available for this)。和修改.post()方法,通過添加第四個參數一樣返回數據的JSON:

$.post("file.php", { file_id: $(this).val()}, function(data) { ... }, "json"); 

然後你可以一樣容易填充您的變量:

$('#title').val(data.title); 
$('#description').val(data.description);