2012-06-04 87 views
1

我使用jQuery的.ajax發送一個相當簡單的對象編譯到php腳本。我想從PHP腳本中的每個對象中提取一個值。 JavaScript的是:使用jQuery發送JSON到PHP ajax

var obj = [{id:1, name:"val1"}, {id:2, name:"val2"},{id:3, name:"val3"}]; 

$.ajax({ 
      type: "GET", 
      url: "call.php", 
      contentType: "application/json", 
      data: {type: "stream", q: JSON.stringify(obj)}, 
      success: function(response){ 
         alert(response); 
        } 
      }); 

的call.php文件寫爲:

if($_GET['type']=='stream'){ 
    $obj = json_decode($_GET['q']); 

    for($i=0;$obj[$i];$i++){ 
    echo $obj[$i]->{'name'}." "; 
    } 
} 

但是它返回0,我根本無法找出原因。

其次,嘗試在javascript中使用type:"POST",在php中使用$_POST,但完全失敗。

+0

您是否在call.php腳本中嘗試了'var_dump'ing'$ _GET'來查看jQuery和PHP對您的數據所做的工作? – cHao

回答

3
data: {type: "stream", q: JSON.stringify(obj)}, 

,而不是這個用

data: {type: "stream", q: obj}, 
+0

是的,這沒有竅門:) –

0

你缺少你的AJAX選項dataType: 'json'contentType選項僅用於僅發送數據。

添加的dataType後,試試這個:

echo $_GET['q']; 

應該簡單地返回您發送的JSON字符串。如果不需要查看控制檯中的問題請求

+1

喜配偶,'dataType'與發送數據無關,但對於您期望的接收數據格式。 – thecodeparadox