0

返された配列は、無効なこの奇妙な形式で戻ってきます。少なくとも私のAJAXの経験ではそうではありません。

function get_within($latitude, $longitude) { 
global $pdo;

  // $lat = $latitude;
  // $long = $longitude;
  // $long = '-70.98245279999999';
  // $lat = '41.98156549999999';

    $stmt = $pdo->prepare("SELECT menu_id, latitude, longitude ( acos(
          cos( radians(".$latitude."   ) ) *
            cos( radians( latitude) ) * 
            cos( radians(".$longitude.") - radians(longitude)) +
            sin( radians(".$latitude.") ) * sin( radians(latitude) ) ))*.621371192
as dis from pages where 1 ORDER BY `dis` ASC LIMIT 10");

$stmt->execute( array() );

return $stmt->fetchAll( PDO::FETCH_OBJ );

上記の関数を使用してAJAXリクエストを行いました。オブジェクトを返すために必要ですが、次のような配列のみを返します。

[{"id":"26","subject_id":"5","menu_name":"Bobby Byrne's Food & Pub\u200e","position":"1","visible":"1","content":"Bobby Byrne's Restaurant & Pub\u200e\r\n65 Massachusetts 6A, Sandwich, MA\r\n(508) 888-6088","longitude":"-70.508598","latitude":" 41.765754","dis":"0.00245126419033985"}]

何が問題であり、オブジェクトでクエリを正しく取得して使用するにはどうすればよいですか?

4

2 に答える 2

1

応答はJSONでエンコードされたオブジェクトです。JSONをオブジェクトにデコードする必要があります。

参照してください:http: //php.net/manual/en/ref.json.php

于 2012-05-23T17:36:32.773 に答える
0

@DanArmstrong が指摘しているように、返される JSON 配列について奇妙なことや無効なことは何もありません。ドキュメント PDOStatement::fetchAllによると、配列を返すことが想定されており、配列を JSON としてエンコードすると、有効な JSON であり、ここに表示されている配列表記が使用されます。

配列の代わりに JSON オブジェクトが必要な場合は、次のいずれかを行う必要があります。

  1. サーバー側で、返された配列全体をエンコードする代わりに、返された配列からアイテムを取得し、fetchAllその値をエンコードします (例: )。json_encode( $results[0] )
  2. クライアント側では、デコードされた配列からアイテムを取得しますJSON.parse( data )[0]
于 2012-05-23T18:09:53.727 に答える