从AJAX返回的Javascript数组

时间:2015-02-23 10:58:31

标签: javascript php arrays ajax

我目前正在尝试实施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;

有谁知道我的错误是什么?

1 个答案:

答案 0 :(得分:1)

您必须在PHP中使用json_encode将数组显示为字符串,然后才能在Javascript中执行JSON.parse$.parseJSON

或者你可以发送JSON标题:

header('Content-Type: application/json');
echo json_encode($data);

您不必使用JSON.parse$.parseJSON来获取JavaScript数组。