0

我有一个创建 xml 列表的 php 文件,在浏览器中查看时看起来像这样

<results>
 <login>
  <name>Mick Smith</name>
  <pass>Micks Password</pass>
 </login>
 <login>
  <name>John Brown</name>
  <pass>Johns Password</pass>
</login>
</results>

我正在尝试使用 Jquery 学习 ajax 并拥有以下脚本,问题是我希望 colsole 日志显示我的结果,但它除了“返回”之外什么都不返回。我已经将 DATA 添加到 ajax 语句中,因为最终我想将数据传递给创建 xml 的文件,我真的很坚持这个,你能提供任何指针吗?

    $.ajax({
    type: "POST",
    url: "pgGeneral_login/validate.php",
    data: { user:user, pass:pass },
    dataType: "xml",
    success: loginval()       });  

  function loginval(data){
        console.log("Returned")

        $(data).find('login').each(function(){

        name = $(this).find('name').text();
        pass = $(this).find('pass').text();
        console.log("Name :" + name) 
        console.log("Pass :" + pass) 
        }); // find loop
    }
4

2 回答 2

3

问题是这样的:

success: loginval()       });
//               ^^ remove

当您将函数分配给成功属性时,您使用的是括号。这会导致函数在分配时执行,而不是在成功事件触发时执行。在您的代码中实际发生的事情loginval()将被执行,并且它的返回值将被分配给success. 删除括号,使其变为:

success: loginval       });
于 2013-02-16T12:11:18.603 回答
0

此外,对于这一行:

data: { user:user, pass:pass },

我不确定您是否已经预定义了这两个变量 user 并在此 ajax 调用之前传递。

在 loginval 函数中,最好将变量设为本地:

name = $(this).find('name').text();
pass = $(this).find('pass').text();

var name = $(this).find('name').text();
var pass = $(this).find('pass').text();
于 2013-02-16T12:19:28.590 回答