4

我有一个数据库表,其字段包含位置的纬度和经度坐标。我想使用数据库中的信息为 Google 地图视图创建标记。

我已经将查询功能实现为

function getCords(){
  $link = connectDB();
  $query = "SELECT * FROM tour";
  $results = mysqli_query($link, $query);

  $jsonArray = array();
  while ($row = mysqli_fetch_assoc($results)){
    $jsonArray[] = array('fileName' => $row['FileName'], 'lat' => $row['Lat'], 'lon' => $row['Lon']);

  }

return json_encode($jsonArray);
}

当我从 php 页面调用此函数时,它返回通常的 JSON 格式。

我的问题是执行 ajax 查询。我在一个包含六个左右控制登录、注销、注册等实用程序功能的 php 脚本文件中有上面的查询功能。要通过 jquery 查询数据库,我试过

var request = $.ajax({
  type:"GET",
  url: "includes/phpscripts.php?action=cords",
  type: "json"
});

var response = request.responseText;

我的问题是响应总是空的。这是由于 URL 的形成还是其他原因?

4

3 回答 3

7
   $.ajax({
      type:"GET",
      url: "includes/phpscripts.php?action=cords",
      dataType: 'json', // necessary, because you're sending json from server
      success: function(response) {  // response will catch within success function
        console.log(response);
      }
    });

或者

   var request = $.ajax({
      type:"GET",
      url: "includes/phpscripts.php?action=cords",
      dataType: 'json', // necessary, because you're sending json from server
    }).done(function(response) {
       console.log(response);
    });

笔记

而不是return json_encode($jsonArray);,使用echo json_encode($jsonArray);

于 2012-06-04T19:52:17.380 回答
0

响应是空白的,因为在执行该行代码时服务器没有返回响应。尝试在 ajax 回调中设置 responseText。见下文,

var response = '';
var request = $.ajax({
  type:"GET",
  url: "includes/phpscripts.php?action=cords",
  type: "json"
}).done (function (data) {
   console.log(data); //json object as jquery converts it for you
   console.log(request.responseText); //string text as returned the server.
   response = request.responseText; 
   //^-- response is a string text as returned the server.
});

演示:http: //jsfiddle.net/hUY6v/

于 2012-06-04T20:28:45.077 回答
-1

jQuery.ajax,你没有使用正确的格式,这就是为什么响应是空白的。

成功处理程序将返回来自服务器端的响应。所以像这样使用它:

 $.ajax({
      type:"GET",
      url: "includes/phpscripts.php?action=cords",
      type: "json"
      success : function(response){
               console.log(response);
        }
   });
于 2012-06-04T19:56:08.750 回答