Ajax PHP/Javascript数组
我使用PHP通过Ajax返回客户地址数组(返回为地址)。 I document.write addresses.responseText,它完美地显示了数组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
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;ichangeif(i==“responseText”)
forif(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]);
}