我目前正在尝试实施AJAX请求:
$("form").submit(function() {
$.ajax({
type: "POST",
url: "user_locator.php",
data: $("form").serialize(), // serializes the form's elements.
success: function(data) {
//save userdata
var userdata = data;
console.log(userdata);
var lat_u = userdata["location"]["lat"];
var lng_u = userdata[1][1];
console.log(lat_u);
console.log(lng_u);
//make a marker
var usermarker = new google.maps.Marker({
position: new google.maps.LatLng(lat_u, lng_u),
map: map,
});
}
});
// avoid to execute the actual submit of the form.
return false;
});
此请求返回一个数组:
[Log] Array (index.php, line 177) (
[range] => 5
[location] => Array (
[lat] => 50.73743
[lng] => 7.0982068
)
)
但是,当我尝试使用:
访问返回的值时`Var lat_u = userdata["location"]["lat"];`
我收到错误代码:
[Error] TypeError: undefined is not an object (evaluating 'userdata["location"]["lat"]')
这是我的php文件:
<?php
// configuration
require("../includes/config.php");
//if ajax is submitted
if(isset($_POST['range']) && !empty($_POST['location']))
{
//save data
$location["range"] = $_POST["range"];
//calculate latlng
$location["location"] = convert($_POST["location"]);
print_r($location);
}
?>
当我尝试使用时:var userdata = JSON.parse(data); 我收到错误:SyntaxError:JSON解析错误:意外的标识符&#34;数组&#34;
有谁知道我的错误是什么?
答案 0 :(得分:1)
您必须在PHP中使用json_encode
将数组显示为字符串,然后才能在Javascript中执行JSON.parse
或$.parseJSON
。
或者你可以发送JSON标题:
header('Content-Type: application/json');
echo json_encode($data);
您不必使用JSON.parse
或$.parseJSON
来获取JavaScript数组。