2016-06-14 12 views
1

コードは次のとおりです。ajax json:ajaxが受け取ったjsonオブジェクトからデータを取得する方法は?ここで

$.ajax({ 
    url: MyURL, 
    method: 'GET', 
    processData: true, 
    contentType: 'application/json;', 
    dataType: "json", 
    success: function(data) { 
    alert("Success data= "+JSON.stringify(data)); 
    var count = Object.keys(data).length; 
    alert("count = "+count); 
    result=data[0]; 
    alert("result.CountryName:"+ result.CountryName); 
    alert("total " + keys.length + " keys: " + keys); 
    error: function(data) { alert("ajax Error"); }, 
}); 

第一のアラートは大丈夫そうですし、提供します: 成功データを= "[{\" COUNTRYNAME \ ":\" フランス\ "\ "通貨\":\" ユーロ"PriceMax \":500.00、\ "PriceStep \":50.00、\ "PriceMin \":100.00}] "

Firebug/network/responseから、同じデータが表示されます(バックスラッシュ! !)

2番目のアラートは107です。明らかに各文字はオブジェクトですか? しかし、http://jsonlint.com/の構文をチェックすると、jsonが正しいです。

最後に、最後のアラートは次のようになります。

何が問題なのですか?

はあなたの助け

答えて

0

あなたが送っているデータは、単一のオブジェクトを含む配列ですいただきありがとうございます。 data[0]['CountryName']を使用する必要があります。

+0

は、残念ながら、それは( "データ[COUNTRYNAME]:" +データ[0] [ 'COUNTRYNAME'])結果のアラートを変更しません。 - > undefined alert( "data.CountryName:" + data [0] .CountryName); - > undefined ありがとうDaniel – alvaro562003

+0

データがJSONとして解釈されていないようです。最初に 'JSON.parse(data)'で手動で解析する必要があります。 –

0

あなたが持っているレスポンスはJSONオブジェクトではなく、ストリングです。したがって、JSONを解析して配列の最初の位置を取得する必要があります。

json_data = JSON.parse(data) 
result = json_data[0] 

と、あなたは、そのオブジェクトのプロパティを使用します。

result.CountryName 
+0

こんにちは、Rubicoに感謝します。私はコードを修正しますが、結果は変わりません。なぜ私はカウント= 107を持っているのだろうか? – alvaro562003

+0

私は、あなたがJsonではなくStringとしてデータを取得していることはほとんど確信しています。今私はそれが文字列であると確信しています、私はテストを行い、文字列の長さは正確に107です。 – Rubico

+0

ダニエルが以下のコメントで言ったように 'console.log(data)'を試しましたか? – Rubico

0

問題は、JSON文字列内のスラッシュました。

私はWhy does JSON returned from the django rest framework have forward slashes in the response?を読んで、私のdjangoコードにいくつかの改変を加えました。

私はJsonResponse(data、safe = False)を返すようにreturn JsonResponse(simplejson.dumps(data)、safe = False)を変更し、スラッシュは消えてからjavascriptコードが機能しました。あなたの助けのための

おかげでダニエルとRubico

関連する問題