0

これを行うと、これが機能します。

$db = $connection->messages;
$collection = $db->messagesCollection;
$messageArray = $collection->find(array('IDto' => '4'));
foreach($messageArray as $messageData){
    $messageFrom = $messageData['IDfrom'];
    $messageTo = $messageData['IDto'];
    $messageTitle = $messageData['messageTitle'];
    $messageIfRead = $messageData['ifRead'];    
}

$JSONData = array('true', $messageFrom, $messageTo, $messageTitle, $messageIfRead); 
echo $_GET['callback']."(".json_encode($JSONData).")";

しかし、これを行うと:

$db = $connection->messages;
$collection = $db->messagesCollection;
$messageArray = $collection->find(array('IDto' => '4'));
$JSONData = array('true', $messageArray); 
echo $_GET['callback']."(".json_encode($JSONData).")";

そしてJavascriptでこれを行います:

$.getJSON("mySite.com/pullData/getMail.php?callback=?",{
request: requestVar},
function(recievedData) {
    alert(recievedData);
})

true, [object Object] コンソールログを使用すると、次のアラートが表示されます。Object {}

そのテーブルデータを正しく送信するにはどうすればよいですか?

4

1 に答える 1

1

私はあなたの最大の問題はMongoCursor

$messageArray = $collection->find(array('IDto' => '4'));
$JSONData = array('true', $messageArray); 
echo $_GET['callback']."(".json_encode($JSONData).")";

そこのオブジェクトをエンコードしようとしているMongoCursorので、文字列表現は[object Object]です。

試す:

$messageArray = $collection->find(array('IDto' => '4'));
$JSONData = array('true', iterator_to_array($messageArray)); 
echo $_GET['callback']."(".json_encode($JSONData).")";

その代わり。findMongoDBのすべての関数は、を返しMongoCursorます。最初のコードが機能する理由は、オブジェクトを構築するカーソルを繰り返すためです。

foreach($messageArray as $messageData){
    $messageFrom = $messageData['IDfrom'];
    $messageTo = $messageData['IDto'];
    $messageTitle = $messageData['messageTitle'];
    $messageIfRead = $messageData['ifRead'];    
}

json_encodeまた、ドキュメントのデフォルトには、やなどのオブジェクトが含まれMongoIdていることにも注意してください。これらのオブジェクトは、MongoDate再利用可能なJSON構文にうまくエンコードされていません。そのため、これらのタイプを自分で処理する必要があります。

編集

おそらく、より良い方法は、実際に手動でインデックスをやり直すことです。

$messageArray = $collection->find(array('IDto' => '4'));
$d = array();
foreach($messageArray as $row){
    $d = $row;
}

$JSONData = array('true', $d); 
echo $_GET['callback']."(".json_encode($JSONData).")";

このようにして0、各インデックスベースとしてObjectIdの代わりにベースの増分インデックスを使用できます。

于 2013-01-29T10:39:01.607 に答える