为什么提供数据库的数据(值)给我[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);
}
});
});
答案 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);
}
}
});