2012-04-24 7 views
0

を追加しません、私は初心者くさいよそう簡単に行く:JSONデータオブジェクトが

この$アヤックス関数は正しい場所に私のXHRのデータを追加しませんなぜ私が把握することはできません。

// gets the cache data from our php file 
function getcaches() { 
    $.ajax({ 
     method: 'get', 
     url: "php/findcache.php", 
     dataType: "json", // return type data is json 
     success: function(data){ // <-- data is in json format 
      //parse the json data 
      $('#caches').append($('<p>' + data[0].name + '</p>')); 
     }, 
     error: function(data) { 
      console.log('error'); 
     } 
    }); 
    return false; 
} 

これは関連するjavascriptです。私はちょうど私が間違ってやっているのか理解していない

[OU0397] => stdClass Object 
    (
     [code] => OU0397 
     [name] => A Mighty Oak in the Open 
     [location] => 28.527633|-81.125167 
     [type] => Virtual 
     [status] => Available 
    ) 

...私は放火魔でそれを見ることができるので、データがオブジェクトに適切に格納されている知っています。すべてのポインタ?

$('#caches').append($('<p>' + data[0].name + '</p>')); 

をそして、あなたはdataを調べる:あなたはFirebugのを持っている場合は

+0

あなたはなぜあなたが '[0]'を持っていると思いますか? –

+2

data [0] .nameまたはdata.nameですか? –

+0

私は両方を試しましたが、私には応答を与えません – pizoelectric

答えて

1

、あなたはここにブレークポイントを設定します。デバッグデータにはOU0397がキーとして表示されました。 PHPのjson_encodeのために、あなたはおそらく辞書が与えられているということです。辞書は別の方法でトラバースされます(例:for i in data { ... })。

また、最初の結果だけを返すようにPHPを変更することもできます。これにより、JavaScriptが簡素化され、ネットワークのオーバーヘッドが軽減されます(例:json_encode(current($data)))。

2

コードサンプルにXSSの脆弱性があります(名前に "<"文字が含まれている場合はどうなりますか?)。

適切なHTMLエンコーディングなしでHTMLにテキスト値を追加しないでください。 jQueryのtext()メソッドを使用して、文字列を連結する代わりに要素テキストを設定することができます。

$('#caches').append($('<p/>').text(data[0].name)); 

あなたの出力が間違っている理由の1つになる可能性があります。

$( '#cache')を実行することでFirebugまたはChrome開発者ツールからjQuery CSSセレクタをデバッグできます。一致する要素の配列が返されます。

関連する問題