我的返回数组以这种无效的奇怪格式返回。至少不是我的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"}]
有什么问题,如何才能正确地在对象中找回我的查询?
答案 0 :(得分:1)
您的回复是JSON编码对象。您需要将JSON解码为对象。
答案 1 :(得分:0)
正如@DanArmstrong所指出的,返回的JSON数组没什么奇怪或无效的。 Per the documentation PDOStatement::fetchAll
应该返回一个数组 - 它是 - 并且当你将数组编码为JSON时它使用array notation,这是有效的JSON和你在这里看到的。 / p>
如果您需要JSON对象而不是数组,则需要:
fetchAll
返回的数组中获取一个项目并对其进行编码
值(例如json_encode( $results[0] )
)而不是编码整个返回的
数组,或JSON.parse( data )[0]
。