什么是[object Object]?

时间:2011-07-16 10:13:35

标签: javascript jquery

为什么提供数据库的数据(值)给我[object Object]?

var dataObj = $(this).closest('form').serialize();
    $.ajax({
        type: "POST",
        url: url,
        data: dataObj,
        cache: false,
        dataType: 'json',
        success: function (data) {
            $(".list_name").show().html('');
                $(".list_name").append('<p><a href="" id="result">' + data + '</a></p>');
                $('.list_name p a').click( function(e) {
                                e.preventDefault();
                                $('<b>' + b + '، </b><input type="text" name="hotel[]" value="' + b + '" style="border: none; display: none;" />').appendTo($('.auto_box span'));
                                $(this).remove();
                            return false;
                            });
            });

结果url是:(json_encode()):

[{"name":"333333"},{"name":"\u0633\u0644"},{"name":"\u0633\u0644\u0627\u0633\u06cc"},{"name":"\u0633\u0644\u0627\u0633\u0633"},{"name":"\u0633\u0644\u0627\u0645"}]

更新:完整代码:

$('.auto_complete').keyup(function () {
        var id = '#' + this.id;
        var alt = $(id).attr('alt'); var id = $(this).attr('id'); var name = $(this).attr('name');
        var url = alt + id + '/' + name;
    var dataObj = $(this).closest('form').serialize();
$.ajax({
    type: "POST",
    url: url,
    data: dataObj,
    cache: false,
    dataType: 'json',
    success: function (data) {
        $(".list_name").show().html('');
        for (i in data) {
            var obj = $('<a href="" id="result">' + data[i].name + '</a>');
            obj.click(function(e) {
                            e.preventDefault();
                            $('<b>' + b + '، </b><input type="text" name="hotel[]" value="' + b + '" style="border: none; display: none;" />').appendTo($('.auto_box span'));
                            $(this).remove();
                        return false;
                        });
             var p = $('p');
             p.append(obj);
             $(".list_name").append(p);
        }
   },
        "error": function (x, y, z) {
            // callback to run if an error occurs
            alert("An error has occured:\n" + x + "\n" + y + "\n" + z);
        }
        });

    });  

4 个答案:

答案 0 :(得分:0)

数据是一个列表(它是javascript对象) javascript中的toString( list )给出了“对象对象”

data [0] .name将返回“333333”

要从复杂对象创建一个字符串,请编写自己的函数。

答案 1 :(得分:0)

数据不是字符串,而是JSON对象,它基本上是一个Javascript对象。您可以像访问任何JS对象/数组一样访问它(看起来您的结果字符串是一个数组)

所以你可以这样做:data[1].name

答案 2 :(得分:0)

看起来你的Ajax调用正在返回一个结构数组。数组中的每个元素都是名称 - 值对。鉴于数据是一个数组,第一个元素是data [0],所以你可以这样做:

var firstElem = data[0];
var firstName = firstElem.name;
alert("The first name is: " + firstName);

如果要将所有名称添加到html中,则需要循环遍历数组,每次都附加当前元素。

如果你想显示所有名字,你可以做

var names = "";

for (var i=0; i<data.length; i++) {
   var elem = data[i];
   names = names + elem.name + ", ";   
}

答案 3 :(得分:0)

我会用以下方式重写它

var dataObj = $(this).closest('form').serialize();
$.ajax({
    type: "POST",
    url: url,
    data: dataObj,
    cache: false,
    dataType: 'json',
    success: function (data) {
        $(".list_name").show().html('');
        for (i in data) {
            var obj = $('<a href="" id="result">' + data[i].name + '</a>');
            obj.click(function(e) {
                            e.preventDefault();
                            $('<b>' + b + '، </b><input type="text" name="hotel[]" value="' + b + '" style="border: none; display: none;" />').appendTo($('.auto_box span'));
                            $(this).remove();
                        return false;
                        });
             var p = $('p');
             p.append(obj);
             $(".list_name").append(p);
        }
   }
});