2016-07-05 4 views
1

jsonデータをJavascriptで取得するにはどうすればよいですか? JavascriptがそのPHPメソッドを呼び出しているときJavascript - PHP経由で送信されたJSONまたは文字列を解析できません

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$URL); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

$result=curl_exec ($ch); // it has json data 

curl_close ($ch); 

/* PHP unit test - shows the data is available and it works 
$obj = json_decode($result, true); 
foreach($obj as $k=>$v) { 
    echo $k . ' ' . $v . '<br/>'; 
} 
*/ 

/* But, from PHP i need to send the data to Browser on Ajax/GET request*/ 
$obj = json_decode($result, true); 
echo $obj; 
//if i do not use json_decode and only do echo $result; then still 
//javascript is unable to parse the json 

ので、そのは、読み取り可能なフォーマットのデコードに失敗:

$.get(submit_url + '/login?', { 
    code_please: '007', 
}, function(data_please) { 

    // ------------------------------FAIL to READ 
    alert(data_please); 
    alert(data_please[0]); 
    alert(data_please.id); 
    //var duce = jQuery.parseJSON(data_please); 
    //var art1 = duce.email; 
    //for(oooi in data_please.db) { data_please.db[oooi].id++ } 

}); 

出力:アレイ

+0

あなたはデータをシリアル化しようとしましたか? – atoms

+0

どういう意味ですか?すでにシリアル化されていませんか? PHPでjson_decodeを使用していますか? – YumYumYum

+0

'json_decode()'ではなく、 'json_encode()'を使ってPHP配列からJSON文字列を生成します。 – Simba

答えて

3

あなたはカールからJSONエンコードされた文字列を取得した場合あなたはそれにjson_decodeを呼び出す必要はありません応答、ちょうどその文字列をエコーし​​ます。 json_decodeは、あなたが望むものではないPHP配列に変換します。

また、$.getJSONを使用して独自のエンドポイントを呼び出す必要があります。これはJSONを自動的にjavascriptで使用できるオブジェクトに変換するためです。

+0

ありがとうございます。 – YumYumYum

2

JSONデータを取得したいが、希望するデータにjson_decode()を使用すると、JSONデータがPHP配列に変換されます。それをしないでください!

また、JavaScript機能でJSONを解析していないため、JSは応答をJSONオブジェクトとして理解できません。これは単なる文字列です。

PHP:

$result = curl_exec($ch); // it has json data 
curl_close($ch); 
exit($result); 

JS:

$.get(submit_url + '/login?', { 
    code_please: '007', 
}, function(data_please) { 
    var json = $.parseJSON(data_please); 

    console.log(json); 
    console.log(json[0]); 
    console.log(json[0].id); 
    //etc...  
}); 
+0

ありがとうございます、両方の答えが問題を解決しました。 – YumYumYum

+0

@YumYumYum問題のない相手、私は助けることができてうれしい。あなたにとって最高の運 – Ben

関連する問題