2013-12-10 119 views
0

所以基本上我在做,看起來像這樣(的var_dump)捲曲請求和響應越來越:PHP字符串JSON數組

string(595) "{"user_id":1,"currency":"eur","purchase_packs":{"1":{"amount":500,"allowed_payment_methods":["ideal","paypal","visa","mc"]},"3":{"amount":1000,"allowed_payment_methods":["mc","ideal","paypal","visa"]},"6":{"amount":2500,"allowed_payment_methods":["mc","ideal","paypal"]},"8":{"amount":5000,"allowed_payment_methods":["ideal"]},"9":{"amount":10000,"allowed_payment_methods":["ideal"]}},"payment_methods":{"ideal":{"name":"ideal","allow_recurring":false},"paypal":{"name":"paypal","allow_recurring":false},"visa":{"name":"visa","allow_recurring":false},"mc":{"name":"mc","allow_recurring":false}}}" 

我想要的就是訪問它在這樣的JS文件:

success: function (data) { 
    alert(data.user_id); 
} 

但我不知道如何正確轉換(?)。

在那之後我的下一個步驟(問題)會,如果我能for循環每購買包做了,所以我可以爲他們的每一個

大概是這樣的創建按鈕:

var pack; 
var packs = data.purchase_packs; 
for (pack= 0; pack < packs.length; pack++) { 
    console.log(packs[pack]); 
} 
+0

你的js ajax調用如果使用jquery可以有指定的響應類型,所以它會把你的php返回的json作爲本地對象存儲,然後你可以訪問。 – Dave

+0

不需要在PHP中將其轉換爲任何內容......它已經是JSON字符串。只需要echo字符串以便消耗 – charlietfl

+0

好吧,我已經嘗試過不轉換它,只是echo字符串,當我這樣做時:data.user_id它表示它是未定義的。 – user1410644

回答

3

我試圖理解你的 「問題」 ....

在JS:

$.post('/some/url',{query: 'somequery'}, 
function (data) { 
    try { 
     data = JSON.parse(data); 
    } catch (e) { 
     return false; 
    } 
    console.log(data); 
}); 

在PHP:

data = json_decode(rtrim($myJSONEncodedString, "\0")); 
if (!empty($data->purchase_packs) 
    foreach ($data->purchase_packs as $key => $value) 
     var_dump($value); 
+0

JSON解析完成了正確訪問元素的工作。但for循環需要在代碼的JavaScript部分,而不是PHP。 拉吉夫蘭詹的答案有用。所以你們都幫助了我。如何在這種情況下選擇最佳答案? – user1410644

+0

點擊「接受該答案」,正在回答投票計數器 –

+0

我知道如何接受答案。我只是不知道選擇哪一個。但是我會和你一起走,因爲你速度更快,這是我的問題的第一部分。 – user1410644

1

使用捲曲接收響應後,只是回聲<script></script>標籤之間的JSON字符串。

然後JSON字符串的樣子:

<script> 
var jsondata = {"user_id":1,"currency":"eur","purchase_packs":{"1":{"amount":500,"allowed_payment_methods":["ideal","paypal","visa","mc"]},"3":{"amount":1000,"allowed_payment_methods":["mc","ideal","paypal","visa"]},"6":{"amount":2500,"allowed_payment_methods":["mc","ideal","paypal"]},"8":{"amount":5000,"allowed_payment_methods":["ideal"]},"9":{"amount":10000,"allowed_payment_methods":["ideal"]}},"payment_methods":{"ideal":{"name":"ideal","allow_recurring":false},"paypal":{"name":"paypal","allow_recurring":false},"visa":{"name":"visa","allow_recurring":false},"mc":{"name":"mc","allow_recurring":false}}}; 
</script> 

然後,<script></script>之間的JavaScript代碼。像這樣:

<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script> 
    alert(jsondata.user_id); // return user_id value 

    jQuery.each(jsondata.purchase_packs, function(i, val) { 
     alert(val.amount); // return amount 
     var paymentMethod = val.allowed_payment_methods; 
     jQuery.each(paymentMethod, function() { 
      alert(this); // will return all payment gateway method 
     });  
    }); 
</script> 

希望會有所幫助!

+0

它幫了很多!謝謝! – user1410644

+0

你最歡迎:) –