Ajax PHP/Javascript数组

Ajax PHP/Javascript数组,php,javascript,ajax,arrays,prototype,Php,Javascript,Ajax,Arrays,Prototype,我使用PHP通过Ajax返回客户地址数组(返回为地址)。 I document.write addresses.responseText,它完美地显示了数组 Array ( [0] => Array ( [addressID] => 15804 [customerID] => 10 [loanID] => [address1] => 6 Road [address2] => [address3] => [town] => Their Town [c

我使用PHP通过Ajax返回客户地址数组(返回为地址)。 I document.write addresses.responseText,它完美地显示了数组

Array ( [0] => Array ( [addressID] => 15804 [customerID] => 10 [loanID] => [address1] => 6 Road [address2] => [address3] => [town] => Their Town [county] => Their County [postCode] => Their postCode [reason] => [current] => 1 [timestamp] => 2013-03-13 14:41:39 ) [1] => Array ( [addressID] => 10 [customerID] => 10 [loanID] => [address1] => 21A Road [address2] => [address3] => [town] => Their 2nd Town [county] => Their 2nd County [postCode] => Their 2nd postCode [reason] => [current] => 0 [timestamp] => 2013-03-13 14:41:39 ) )
不过,我在循环使用数组信息时遇到了问题

new Ajax.Request('includes/ajax.php',
        {
            method:'post',
            parameters: {addCustID: customerID},
            onSuccess: function(addresses){

            document.write(addresses.responseText);

                for (var i in addresses)
                {

                    if(i == "responseText") 
                    {                           
                        addressExpander.addEntry(addresses[i]);
                    }
                }
            },
            onFailure: function(){ alert('Something went wrong...') }
        });
我想运行
addressExpander.addEntry(地址[I])针对每个地址,但它仅显示一次,而不是针对每个地址

我尝试了在
if(I==“responseText”)
循环中遍历
地址.responseText
,但没有任何作用


顺便说一句,我正在使用Prototype,它已经在页面中使用了。

似乎您遇到的问题是,和之间存在相当大的差异

为了弥补这些差异,我们的霸主创建了万能的JSON格式,这有助于实现跨语言数据结构的共享。在回显PHP响应之前,请像这样使用:

您的JS代码应该能够在没有任何修改的情况下工作。如果没有,请尝试在onSuccess回调中添加
JSON.parse

var your_js_arr = JSON.parse(addresses.responseText);

for (var i in your_js_arr)
{               
    addressExpander.addEntry(your_js_arr[i]);
}

假设这条线:

document.write(addresses.responseText);
是生成您发布的输出的,您正在打印addresses.responseText,它是地址数组

正如您在回答中所说,从外观上看,您需要遍历addresses.responseText:

for (var i=0;i<addresses.responseText.length;i++)
{     
     addressExpander.addEntry(addresses.responseText[i]);
}

for(var i=0;ichange
if(i==“responseText”)
for
if(addresses[i]==“responseText”)
否则您将比较索引而不是变量的实际值。谢谢,尽管我这样做了,现在是addressExpander.addEntry(addresses[i]);根本不运行这意味着
地址中包含的任何值都不包含值
responseText
。我确实试过了,它循环了大约50次!谢谢你的帮助。我得到了想要的2个地址块,这很好,但之后还产生了37个空白地址块。它循环了39次,而不是像我原来的示例中那样2次。解决了它,我添加了“if(your_js_arr[I][“address1]”)addressExpander.addEntry(您的_js_arr[i])”
for (var i=0;i<addresses.responseText.length;i++)
{     
     addressExpander.addEntry(addresses.responseText[i]);
}