Jquery循环遍历xml列表并分配变量

时间:2013-02-16 15:56:38

标签: jquery

我有以下脚本按预期工作,它检索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 

有什么帮助吗?

3 个答案:

答案 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 )
}