PHPで生成してJavascriptに返すJSONデータの読み取りに少し問題がありますが、その理由はわかりません。
PHPは次のとおりです。
header("content-type: text/json");
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
// echo the result as a JSON object
echo json_encode($result);
そしてここにJavscriptがあります:
$.post("payment_do.php", { "token": response.response.token, "ip_address": response.ip_address}).done(function(data) {
console.log(data);
});
PHPでヘッダー行を削除した場合、Javascriptで読み取ることができる応答が返されますが、期待どおりに要素にアクセスできません。そこにヘッダーを残しておくと、JavaScriptで読み取れる応答が得られません。
編集:今、phpから応答を取得すると、次のようになります:
"{\"response\":{\"token\":\"ch_9knTXHoU0dVZsl7iMHyHGg\",\"success\":true,\"amount\":9900,\"currency\":\"AUD\",\"description\":\"test\",\"email\":\"test@test.com\",\"ip_address\":\"1.1.1.1\",\"created_at\":\"2013-03-18T23:49:12Z\",\"status_message\":\"Success!\",\"error_message\":null,\"card\":{\"token\":\"test_token\",\"display_number\":\"XXXX-XXXX-XXXX-0000\",\"scheme\":\"master\",\"address_line1\":\"123 Fake Street Fakington\",\"address_line2\":null,\"address_city\":\"moon\",\"address_postcode\":\"2121\",\"address_state\":\"NSW\",\"address_country\":\"Australia\"},\"transfer\":[],\"amount_refunded\":0,\"total_fees\":999,\"merchant_entitlement\":999,\"refund_pending\":false}}"
結局、phpのjson_encode関数を削除して、結果を返す必要がありました。次に、javascript(jQueryを使用)で次のように呼び出しました。
data = $.parseJSON(data);
これを使用して、オブジェクトの要素にアクセスできます。