1

我对 AJAX 调用非常陌生 - 在网上浏览了一些教程,但仍然没有取得成功。

输入字段的分配 ID 为“idkey”。脚本如下:

$(document).on("keyup.autocomplete", "#idkey", function(){ 
    var query = "q=" + $(this).val();
    $.ajax({
        url: 'api.php',
        type: 'GET',
        data: query,
        dataType: 'json',
        success: function(data) {
            alert(data);
            for (var i=0;i<data.length;i++) {
                content = data[i].IDKey;
                content += "<br>";
                $(content).appendTo("#output");
                // updateListing(data[x]);
            }
        }
    });
});

在服务器端,api.php 的输出为:

[{"IDKey":"30000001"},{"IDKey":"30000002"},{"IDKey":"30000004"}]

我不确定为什么alert(data)会返回[object Object], [object Object], [object Object]。任何线索为什么会发生这种情况?

p/s: php 文件的标头设置为Content-Type: application/json.

4

6 回答 6

5

类型警报(JSON.stringify(数据));

于 2012-09-21T00:01:08.163 回答
4

警报返回[object Object], [object Object], [object Object]是因为您有 3 个 javascript 对象的数组,并且对象不能仅作为字符串警报,您可以使用console.log来查看对象的内容,只需使用console.log而不是alert检查浏览器的控制台

于 2012-09-21T00:00:52.590 回答
2

您的 json 响应是一个包含 3 个对象的数组。这就是您将警报视为对象的原因。

试试alert(data[0].IDKey)..它应该给你 30000001

要查看数据,请尝试 console.log 或将警报放在 for 循环中

for (var i=0;i<data.length;i++) {
    alert(data[i].IDKey);
 }

$.each(data, function(i, value) {
   console.log('Value of '+ i +' is : ' + value);
})
于 2012-09-21T00:15:43.370 回答
1

正在返回三个对象,因为alert(data)就是JSON。Java s cript Object Notation

它返回一个数组对象,这就是它的全部返回,这就是它显示它的方式的原因。

如果您想查看这样一个数组的结果..每个对象包含什么,那么您需要使用console.log()

console.log(data)
于 2012-09-21T00:02:11.187 回答
0

苏珊斯上面说的

    for (var i=0;i<data.length;i++) {
        alert(data[i].IDKey);
    }

如果您使用的是 IE,请记住删除或注释掉 console.log() 方法。IE 不太喜欢它们。

于 2015-03-09T19:23:58.687 回答
0

您的输出是 [object, object] 因为您实际上返回了一个对象数组。为了检索这些对象的内容,您必须遍历每个数组并访问包含的每个单独的对象。

于 2015-03-09T19:32:35.117 回答