2010-11-27 11 views
1

にPHPの配列をオンにここに私のPHPコードがあり、私が、コンソールを行うMongoDBのPHPのjson_encode実際のオブジェクトに、配列の文字列を作る/実際のオブジェクトにはなりません/ JSON

$list = $db->dbname->listCollections(); 
$result = array(); 
$i=0; 
foreach ($list as $thiscollection) { 
    $result[$i++] = $thiscollection->getName(); 
} 
echo json_encode($result); 

からコレクションのリストを取得しています。コールバックにログインして、これは私が見るものです。

["fruits", "dogs", "cars", "countries"] 

問題は、これが文字列ではない配列であることです。私はこれらの値を繰り返す必要があります。どのように私は実際のオブジェクトにこれを作るか、私はそれをparseJSONを使用することができますのでPHPの配列ではなく私にJSONを与えるPHPを取得します。

ありがとうございました。

JS:

$.post('/ajax-database.php', function (data) { 
    console.log($.parseJSON(data)); 
    $.each(data, function (key, value) { 
     console.log(value); 
    }); 
}); 
+0

コンソールはそれを印刷すると*は*配列です。 – timdream

+0

@timdream isArrayがそうでないと言ったとき。私が$ .eachを実行しようとすると、角カッコと引用符を含むすべての文字が取得されます。 – Mark

+0

それは有線です。あなたのJavascript機能を投稿できますか?おそらく 'header( 'Content-Type:text/javascript');' jQueryがjsonとしてデータを解釈することを 'echo'する前に? – timdream

答えて

3

jqueryを使用していることがわかります。データをjsonオブジェクトとして戻すには、2つのうちの1つを実行する必要があります。

  1. 追加ヘッダ(「のContent-Type:アプリケーション/ JSON」)あなたのPHPファイルには、これはJSONオブジェクトに変換の代わりに、テキストとして

  2. がするなどのパラメータを追加するためにjqueryのを教えてくれますPHPコードは失敗し、代わりにHTMLを出力した場合のように、そのことJSON場合は、あなたのエラーハンドラを呼び出すためにjqueryのを教えてくれますあなたの$ .post、

 
$.post('/ajax-database.php', function (data) { 
    console.log($.parseJSON(data)); 
    $.each(data, function (key, value) { 
     console.log(value); 
    }); 
}, "json"); 

。あなたは本当に$ .ajaxを使うべきです、誰が$ .postを使っているのか分かりません。意味のあるエラー処理はできません。

+0

+1があなたのことを見たときに投稿されました – Philar

+0

jQuery.post()でのリクエストでエラーコードが返された場合、スクリプトがグローバルとも呼ばれていない限り、エラーは自動的に失敗します。ajaxError()メソッド - http://api.jquery.com/jQuery.post/ – ajreal

+0

はい、私はちょうどそれが悪い習慣は、その点で世界的にエラーを処理すると考えて、各別のスクリプトが可能性があります多分異なるエラーです。 – Rahly

0

JSON 文字列です。あなたがそれを反復できるようにするには、それを解読する必要があります。

+0

ええ、問題はそれがjsonではないということです。それは角括弧を持っています。 – Mark

+0

はい、そうです。トップ値はオブジェクトである必要はありません。 –

+0

@マーク:[]は、ArrayとjavascriptのAREオブジェクトのすべての配列を意味することを覚えています。プロトタイプを持っています。 – Rahly

関連する問題