2012-01-11 86 views
43

我正在尋找一個更好的解決方案,使用jQuery進行AJAX調用,使PHP文件返回一個數組,並將它作爲Javascript數組發送到客戶端。這是我一直在做這樣的:如何從AJAX調用返回數組?

PHP文件(使用example.php):

<?php 
    $id_numbers = array('NES-ZL','NES-AL','SNS-ZL'); 

    for ($i=0; $i<count($the_array); $i++){ 
     echo $id_numbers[$i]; 
     echo '|'; 
    } 
?> 

JS文件:

id_numbers = new Array(); 
$.ajax({ 
    url:"Example.php", 
    type:"POST", 
    success:function(msg){ 
     id_numbers = msg.split('|'); 
    } 
}); 

我目前的方法就是對我的口味有點太令人費解。

我想什麼做的是能夠只

return $id_numbers; 

在PHP端,並直接將其轉換成AJAX調用後一個Javascript數組。

想法,任何人?

+2

是不是不使用JSON? – jAndy 2012-01-11 17:39:36

回答

98

使用JSON在客戶端和服務器之間傳輸數據類型(數組和對象)。

在PHP:

在JavaScript:

PHP:

echo json_encode($id_numbers); 

的JavaScript:

id_numbers = JSON.parse(msg); 

正如沃爾夫岡提到的,你可以給一個第四個參數jQuery來自動爲你解碼JSON。

id_numbers = new Array(); 
$.ajax({ 
    url:"Example.php", 
    type:"POST", 
    success:function(msg){ 
     id_numbers = msg; 
    }, 
    dataType:"json" 
}); 
+0

令人難以置信的幫助!它一定會使一切變得簡單和漂亮。 – 2012-01-11 19:52:44

+1

@k_sel這幾乎是一個行業標準。每個人都使用這個AJAX。你會注意到JSON也是有效的JavaScript。 – 2012-01-11 20:27:34

+1

不要忘記使用'async:false' – Yuri 2017-02-22 07:52:45

9

在PHP中查看json_encode()。您可以通過dataType:「json」參數獲取$ .ajax來識別此信息。

0

看一看json_encode(http://php.net/manual/en/function.json-encode.php)。它從PHP 5.2起可用。使用參數dataType: 'json'爲您解析。然後,您將擁有Object作爲第一個參數。欲瞭解更多信息,看看在jQuery的文檔:http://api.jquery.com/jQuery.ajax/

0

PHP有這個超級性感的功能,只需將數組傳遞給它:

$json = json_encode($var); 

$.ajax({ 
url:"Example.php", 
type:"POST", 
dataType : "json", 
success:function(msg){ 
    console.info(msg); 
} 
}); 

simples :)

1

@ Xeon06,不錯,但對於那些閱讀這個主題並像我一樣嘗試從php =>json_encode($theArray)返回數組時返回 。轉換爲字符串,這對我來說並不容易操作,特別適合像我這樣的軟件用戶。

在js裏面,你試圖使用JSON.parse獲取數組的值和/或鍵的最佳值,如var jsArray = JSON.parse(data),其中數據是從php返回的數組。 json編碼的字符串轉換爲js對象,現在可以輕鬆操作。

例如 foo = {one:1,two:2,three:3} - JSON.parse後得到

for (key in foo){ console.log("foo["+ key +"]="+ foo[key]) } - 打印到您的螢火蟲控制檯。瞧!

+0

奇怪,因爲它可能是,如果你正在使用多維數組,請嘗試'json_encode'內部數組,因此'$ parent_array = array(json_encode($ child_array)); '。它在我的情況下工作。 – 2017-01-22 21:56:59