我有以下脚本按预期工作,它检索XML列表并分配一些变量
$.ajax({
type: "POST",
url: "pgGeneral_login/validate.php",
data: { user:user , pass:pass },
dataType: "xml",
success:loginval });
function loginval(data){
console.log("Returned" )
valid = $(data).find('valid').text();
name = $(data).find('name').text();
pass = $(data).find('pass').text();
};
我想要做的是不是为每个xml结果分配一个变量(valid = $(data).find('valid')。text())循环遍历列表并将值赋值给标签名称没有写一个巨大的代码列表,如果它是PHP我会使用类似
的东西 foreach ($row as $k => $v)
$$k = $v
有什么帮助吗?
答案 0 :(得分:3)
这将直接更新全局变量列表,不建议使用。
你走了,
function loginval(data){
console.log("Returned" )
// valid = $(data).find('valid').text();
// name = $(data).find('name').text();
// pass = $(data).find('pass').text();
$(data).children().each(function(){
// Directly adding to the Global list
window[this.tagName] = $(this).text();
});
console.log(valid);
console.log(name);
}
答案 1 :(得分:2)
作为ATOzTOA代码的附录,这也允许您动态地将变量添加到全局范围(即,在AJAX功能之外使用)。它使用eval()
函数generally avoided in most JS development:
// Array of fields you want to traverse
var array = ['text', 'name', 'pass'];
// This is the data object you get from your AJAX function
var vals = {
text: 'Hello',
name: 'John',
pass: 'Password'
};
// Loop through and assign your vars
for (var i = 0; i < array.length; ++i) {
var key = array[i];
eval('var ' + key + ' = "' + vals[key] + '"');
}
console.log(text);
认为这是一个有趣的问题,所以这个答案纯粹是为了提供一种替代方案(如果是假设的) - 如果将其用于生产目的,我会谨慎行事。
答案 2 :(得分:1)
认为它不是你可以用php实现的,但我认为它有点像你想要的那样:
function loginval(data){
console.log("Returned" )
$dataList={};
$(data).children().each(function(){
$dataList[this.tagName]=$(this).text();
});
console.log($dataList )
}