2012-04-09 90 views
1

我需要在php中返回一個數組並在javascript中使用它。當我打印返回的值時,它會打印空字符串。我如何犯錯?獲取php數組值到一個javascript數組中

$.ajax({ 
    type: "POST", 
    url: "sort2.php",  
    success: function(result){  

    alert(result[0]);            

    } 
}); 

//sort2.php

$data[0] = "book"; 
$data[1] = "pen"; 
$data[2] = "school"; 
echo json_encode($data); 
+0

當你'警報(結果)' – 2012-04-09 07:18:27

+0

它提供了一個空字符串 – user1077300 2012-04-09 07:19:56

回答

1

你必須解析JSON數據

$.ajax({ 
    type: "POST", 
    url: "sort2.php",  
    success: function(result){  

    //Parse Json to Array 
    result = jQuery.parseJSON(result); 
    alert(result) // would output the result array          

    } 
}); 
+0

不需要;見alex的答案。當我在服務器上運行這個代碼時,它運行時爲 – 2012-04-09 07:12:56

3

你可以改變你$.ajax()請求dataTypejson並有jQuery將自動從字符串解碼的JSON對象。

或者,您可以添加到您的PHP header('Content-Type: application/json')和jQuery應該也會自動解碼您的JSON字符串。

+0

與任何數據類型設置發生了什麼,它應該默認爲'auto'。是否返回特定的格式以便它不會自動檢測JSON? – 2012-04-09 07:08:43

+0

@GregPettit我相信自動查看MIME類型來嘗試猜測格式。如果響應的MIME是'text/html'(PHP的默認MIME類型響應),那麼它會猜錯。 – alex 2012-04-09 07:09:09

+0

我總是明確地設置dataType(它也使得可讀性更好),但我很好奇。當然,明確表示不會傷害! – 2012-04-09 07:10:56

1

在你sort2.php文件,更改下面的代碼:

echo json_encode($data); 

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

它的作用是告訴客戶端瀏覽器將響應視爲JSON數據並進行相應的解析,而不是HTML,這是默認設置。

此外,請確保sort2.php文件與您正在進行ajax調用的html文件位於相同的文件夾中。

希望這會有所幫助。

1

你也可以使用jQuery的$ .post方法,它看起來像這樣:(所以你不需要改變你的php腳本,在這裏看到:jQuery Post)。

$.post(
    'sort2.php', //script you request 
    {}, //post-data you want to send 
    function(result) { 
     alert(result[0]); /*i like more: console.log(result); this way you can see it in firebug e.g.) */ 
    }, 
    'json' //data-type you expect 
); 
+0

。但在我的本地它給警報(結果[0])行錯誤,因爲它是空的,或沒有一個對象。可能是什麼問題? – user1077300 2012-04-09 08:16:49

+0

嘗試'alert(result);'或更好'console.log(result);' (這將顯示在螢火蟲 - >控制檯)。並用螢火蟲檢查PHP腳本在螢火蟲中的回報(可能是本地PHP的問題)。每次使用ajax時不會顯示Php錯誤。 [鏈接](http://img.photobucket.com/albums/v303/cstapetrei/Blog/firebug-1.png) – Mohammer 2012-04-09 08:22:50

+0

alert(result);當我編寫控制檯時給出「未定義」。記錄它說控制檯「未定義」 – user1077300 2012-04-09 08:26:01