【问题标题】:jquery read xml not functionjquery读取xml不起作用
【发布时间】:2010-01-28 11:46:37
【问题描述】:

显然我一定忽略了一些东西。这是我的脚本,下面是数据。

 $("#kenteken").blur(function(){

  var sRegistrationNr = $(this).val();
  var sChassisNumber = false;

  $.ajax({
   type: "GET",
   url: "/activeContent/warrantyClaim/ajax-xml-response.php",
   data: "return=auto&kenteken="+sRegistrationNr,
   dataType: "xml",
   success: function(xml) {
    $(xml).find("xmlresponse").each(function(){
     $(this).find("data").each(function(){
      var sChassisNumber = $(this).find("chassisnummer").text();
     });
    });
   }
  });

  alert(sChassisNumber);

 });

这是来自xml文件的数据(响应良好)

- <xmlresponse>
  <result>GPZB89</result> 
- <data>
  <kenteken>GPZB89</kenteken> 
- <chassisnummer>
- <![CDATA[ KNEFA2253N5000176
  ]]> 
  </chassisnummer>
  </data>
  </xmlresponse>

这哪里出错了?

【问题讨论】:

    标签: jquery xml


    【解决方案1】:
    $.ajax({
        ...
        success: function(xml) {
            var sChassisNumber= $(this).find("chassisnummer").text();
        }
    });
    alert(sChassisNumber);
    

    您在 AJAX 请求完成并回调函数之前读取回调函数的结果。

    AJAX 中的“A”代表异步。当脚本到达$.ajax() 调用之后的行时,操作仍在进行中。这就是为什么你必须传入一个回调函数才能在它完成时执行。

    【讨论】:

    • 谢谢!这让我走了。将警报放在成功功能中是有效的。但是有没有办法从 ajax 调用之外的成功回调函数中获取数据? (只是好奇)还是应该在成功回调中处理所有事情?在调用之外有一个可以处理从成功调用返回的数据的函数会很棒
    • 一切都必须在回调中或回调后处理,当然。您可以在回调中设置一个全局变量,如果需要,以后可以读取该变量。或者,如果您只是想避免内联处理代码,您可以定义顶级function chassisFound() { ... } 并将其传递为success: chassisFound。顺便说一句,避免在不转义的情况下手动构造key=value 查询字符串。你可以使用'kenteken='+encodeURIComponent(sRegistrationNr),或者,也许更好,让jQuery为你做这件事:data: {'return': 'auto', 'kenteken': sRegistrationNr}
    【解决方案2】:

    安装firebug并查看详细返回的内容:

    console.log(xml);
    console.log($(xml)); //this will be clickable in console.
    

    单击并探索对象。也许 $(xml) 已经是 xmlresponse 节点,您尝试在其中找到另一个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      • 2023-04-09
      相关资源
      最近更新 更多