2

我试图从 JSON 对象中检索一些数据,其中包含位置信息,例如街道名称、邮政编码等。但是当我尝试将其放入我的 div 时,什么都没有被检索到。有人能看出我哪里出了问题吗?

这是我请求和检索数据的 ajax 代码

var criterion = document.getElementById("address").value;
$.ajax({
          url: 'process.php',
          type: 'GET',
          data: 'address='+ criterion,
          success: function(data) 
          {
              $('#txtHint').html(data);
              $.each(data, function(i,value)
                {
                    var str = "Postcode: ";
                    str += value.postcode;
                    $('#txtHint').html(str);
                });
            //alert("Postcode: " + data.postcode);
          },
          error: function(e) 
          {
            //called when there is an error
            console.log(e.message);
            alert("error");
          }
}); 

当它在浏览器中运行时,只会显示“邮政编码:未定义”。

这是从数据库中选择数据的 php 代码。

    $sql="SELECT * FROM carparktest WHERE postcode LIKE '".$search."%'";


$result = mysql_query($sql);

while($r = mysql_fetch_assoc($result)) $rows[] = $r;
echo json_encode($rows), "\n"; //Puts each row onto a new line in the json data
4

5 回答 5

2

您缺少数据类型:

$.ajax({
  dataType: 'json'
})

您也可以使用$.getJSON

编辑:JSON 示例

$.getJSON('process.php', { address: criterion } function(data) {
    //do what you need with the data
    alert(data);
}).error(function() { alert("error"); });
于 2012-05-09T16:02:12.187 回答
1

看看你的代码在做什么。

首先,将数据直接放入#txtHint盒子中。

然后,对于每个数据元素,创建字符串"Postcode: "+value.postcode(甚至不检查是否value.postcode存在 - 它可能不存在)并#txtHint用它覆盖 html。

最终结果:脚本完全按照您的要求执行。

删除那个循环的东西,看看你得到了什么。

于 2012-05-09T16:01:01.290 回答
0

使用

dataType: 'json'

ajax 调用中的参数或使用$.getJSON()它将自动将 JSON 数据转换为 JS 对象。

您还可以像这样在成功回调中使用$.parseJSON()自己将 JSON 响应转换为 JS 对象

data = $.parseJSON(data);
于 2012-05-09T16:12:22.853 回答
0

这在您的网站上对我有用:

function showCarPark(){
    var criterion = $('#address').val();

    // Assuming this does something, it's yours ;)
    codeAddress(criterion);

    $.ajax({
        url: 'process.php',
        type: 'GET',
        dataType: 'json',
        data: {
            address: criterion
        },
        success: function(data)
        {
            $("#txtHint").html("");
            $.each(data, function(k,v)
            {
                $("#txtHint").append("Postcode: " + v.postcode + "<br/>");
            });
        },
        error: function(e)
        {
            alert(e.message);
        }

    });
}
于 2012-05-09T16:37:00.883 回答
0

您的 JSON 数据是否代表包含相同对象结构的多行?请在您的成功函数中提醒数据对象并将其发布,以便我们帮助您调试它。

于 2012-05-09T16:02:49.897 回答