使用Ajax和Jquery的PHP数组-如何从数据中创建下拉列表?

使用Ajax和Jquery的PHP数组-如何从数据中创建下拉列表?,php,jquery,ajax,Php,Jquery,Ajax,这是我第一次使用AJAX和PHP。我写了一个简单的登录页面(如下)。如您所见,Ajax将把用户名发送到blur上的getLocations.php,我在这个网站和youtube的帮助下编写了这个用户名(我省略了db connect部分,但它就在那里): 此时,我的数组已“加载”,我可以在firebug中看到响应: {"result":[{"name":"Chenal"},{"name":"Heights"}]} 但是,我似乎无法填充我的选择选项。我觉得我把这件事做得比它应该做的更难了(我已经盯

这是我第一次使用AJAX和PHP。我写了一个简单的登录页面(如下)。如您所见,Ajax将把用户名发送到blur上的getLocations.php,我在这个网站和youtube的帮助下编写了这个用户名(我省略了db connect部分,但它就在那里):

此时,我的数组已“加载”,我可以在firebug中看到响应:

{"result":[{"name":"Chenal"},{"name":"Heights"}]}
但是,我似乎无法填充我的选择选项。我觉得我把这件事做得比它应该做的更难了(我已经盯着它看了好一阵子了)。谢谢大家的帮助。

1)您没有告诉jquery您希望返回json响应,所以它会将其视为纯文本

$.post( 
    dataType: 'json'   // <<--you need this

在效率方面,虽然有时将数据作为数据传递是一个好主意,但如果您要处理的只是将数据填充到表单字段中,那么最好在服务器上构建HTML并直接传递

您必须循环使用PHP返回的JSON:

演示:

var response={“result”:[{“name”:“Chenal”},{“name”:“Heights”}]}
var r=响应。结果;
对于(r中的变量i)
{            
$('select').append(“+r[i].name+”);
}
在这方面:

$.ajax({
    type: "POST",
    url: "getLocations.php",
    data: "username="+sendu,
    // Added this so jQuery knows what kind of data is being returned
    dataType: 'json', 
    success: function(response){
        var r = response.result;
        for (var i in r)
        {            
            $('select').append("<option value=\""+r[i].name+"\">"+r[i].name+"</option>");
        }
    }    
});
$.ajax({
类型:“POST”,
url:“getLocations.php”,
数据:“用户名=”+sendu,
//添加了此选项,以便jQuery知道返回的数据类型
数据类型:“json”,
成功:功能(响应){
var r=响应。结果;
对于(r中的变量i)
{            
$('select').append(“+r[i].name+”);
}
}    
});

不要返回一个对象数组(每个对象都只有一个name属性),而应该直接返回一个值数组。您可以使用一个简单的
for
循环来循环阿纳尔:你的代码中的错误是你试图访问<代码>响应。Name <代码>,但是你的响应对象没有这样的属性——它是代码>响应。结果< /代码>,只有一个对象数组。考虑下一次给你的问题提供反馈。Cbroe…谢谢你的评论。所有这些回答都非常有用。你们太棒了…戴夫,谢谢你们的回复。很抱歉,我不能很快回复…3个5岁以下的孩子让事情变得很艰难。这完全有道理,而且效果很好。我做了一次修改,一旦输入了新名称,就删除了这些值。没问题,谢谢回来!当男人得到答案时,他们消失的次数太多了!谢谢,马克……我会投弃权票的。感谢您对其他选项的帮助和想法
$.post( 
    dataType: 'json'   // <<--you need this
 success: function(data) {
        $.each(data, function(i, opt) {
            $('select').blahblah + opt.name + blahblah
        })
var response = {"result":[{"name":"Chenal"},{"name":"Heights"}]}
var r = response.result;

for (var i in r)
{            
    $('select').append("<option value=\""+r[i].name+"\">"+r[i].name+"</option>");
}
$.ajax({
    type: "POST",
    url: "getLocations.php",
    data: "username="+sendu,
    // Added this so jQuery knows what kind of data is being returned
    dataType: 'json', 
    success: function(response){
        var r = response.result;
        for (var i in r)
        {            
            $('select').append("<option value=\""+r[i].name+"\">"+r[i].name+"</option>");
        }
    }    
});