2012-01-25 8 views
5

PHP配列からデータを取得するのに問題があるようですが、これを行う方法のさまざまな例を見てきましたが、私のコードを動作させることができないため、 。JQueryのPHP配列からの読み込み

PHP方法

function getLatestActivity(){ 
    $messages = array( 
     array('id'=>'01', 'value'=>'blah'), 
     array('id'=>'02', 'value'=>'Oil'), 
     array('id'=>'03', 'value'=>'Spark') 
    ); 

    echo json_encode($messages); 
    return; 
} 

AJAXはfunctiom

function getLatestActivities(){ 
    $.ajax({ 
     type: "GET", url: "include/process.php", 
     data:{ 
     getLatestActivity: "true", 
     toUser: "4", 
     ignoreMessages:"1", 
     dataType: "json" 
     }, 
     success: function(data){ 
     $.each(data, function (i, elem) { 
      alert(data.id); 
     });    
     } 
    }); 
} 

"未定義" のメッセージアウト・アラートのプリントを取得、任意の助けをいただければ幸いありがとう。

答えて

6

で試してみてください - それは今あなたの単一のオブジェクトです:

alert(elem.id); 
+0

奇妙ですがまだ動作しませんでした。 –

+0

'$ .each()'の前の 'data'にあるものを確認してください。 – hsz

+0

「アラート(データ);」と書いたら$ .each()の代わりに [{"id": "01"、 "value": "blah"}、{"id": "02"、 "value": "Oil"}、 "id": "03"、 "value": "Spark"}] –

0

私は成功の兄弟(オプション)でなければなりませんデータ型は、むしろ、データオブジェクトの一部であってはならないと思います。私はあなたがJSONオブジェクトとしてデータを受け取っていないと信じています。

2

データがあなたが期待しているものではない可能性が高いです。あなたはあなたのレスポンスにヘッダーを設定しておらず、@Sudesh dataTypeが正しい場所にないことを示唆しています。その結果、jqueryはJSONとして解析しないため、データは文字列の可能性が高くなります。

また、間違った変数を参照しています。 data.idは、PHPから戻ってくるデータと一緒に存在することはできません。 elem.idが必要です。データに期待通りのものが含まれていた場合はdata[i].idが好きです。 - forループの代わりに$ .eachを使用することは比較的非効率的です。

それはのようなコードでケースの場合は、チェックすることができます。データは(あなたが期待しているもの、または単に、ではない)の文字列である場合

function getLatestActivities(){ 
    $.ajax({ 
     type: "GET", url: "include/process.php", 
     data:{ 
     getLatestActivity: "true", 
     toUser: "4", 
     ignoreMessages:"1", 
     dataType: "json" 
     }, 
     success: function(data){ 
     console.log(data); // <- look at the response 
     $.each(data, function (i, elem) { 
      // alert(data.id); don't debug using alerts 
      console.log(elem); 
     });    
     } 
    }); 
} 

これはあなたが近づく必要があります。

function getLatestActivity(){ 
    .... 
    header('Content-type: application/json'); 
    echo json_encode($messages); 
} 

function getLatestActivities(){ 
    $.ajax({ 
     url: "include/process.php", 
     data:{ 
     getLatestActivity: true, 
     toUser: 4, 
     ignoreMessages:1, 
     }, 
     success: function(data){ 
     console.log(data);   
     ...    
     } 
    }); 
} 

data

は、少なくとも、アレイであるべきです。

関連する問題