我返回的数组没有作为对象返回

时间:2012-05-23 17:34:25

标签: php ajax json pdo

我的返回数组以这种无效的奇怪格式返回。至少不是我的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"}]

有什么问题,如何才能正确地在对象中找回我的查询?

2 个答案:

答案 0 :(得分:1)

您的回复是JSON编码对象。您需要将JSON解码为对象。

请参阅: http://php.net/manual/en/ref.json.php

答案 1 :(得分:0)

正如@DanArmstrong所指出的,返回的JSON数组没什么奇怪或无效的。 Per the documentation PDOStatement::fetchAll应该返回一个数组 - 它是 - 并且当你将数组编码为JSON时它使用array notation,这是有效的JSON和你在这里看到的。 / p>

如果您需要JSON对象而不是数组,则需要:

  1. 在服务器端从fetchAll返回的数组中获取一个项目并对其进行编码 值(例如json_encode( $results[0] ))而不是编码整个返回的 数组,或
  2. 在客户端获取解码数组中的项目,例如JSON.parse( data )[0]