【问题标题】:jQuery Ajax Returning Error on Click but Runs fine with Document.Ready?jQuery Ajax 单击时返回错误但使用 Document.Ready 运行良好?
【发布时间】:2012-03-08 18:03:24
【问题描述】:

更新:在 IE 中似乎可以正常工作,但在 Opera、FF 或 Chrome 中却不行...

我正在尝试使用 javascript 编写一种使用绑定将数据导入 sqlite 的简单方法。我的点击功能不适用于我的简单 ajax 请求。我在这里很困惑......一如既往,这很好用:

$("#showDB").click(function(){alert("CLICKED!")});

这很好用:

$(document).ready(function () {
            $.ajax({
                type: 'GET',
                url: 'dv.xml',
                dataType: 'xml',
                success: parseXml,  
                error: function() {
                    alert('XML file not found.');

                }
            });
            function parseXml(xml) {
                    //alert('XML file found.');
                    $(xml).find('Employee').each(function(){
                        var name = $(this).find('name').text();
                        var email = $(this).find('email').val();
                        var jobtitle = $(this).find('jobtitle').val();
                        var address = $(this).find('address').val();
                        var workphone = $(this).find('workphone').val();
                        var homephone = $(this).find('homephone').val();
                        var cellphone = $(this).find('cellphone').val();
                        var fax = $(this).find('fax').val();
                        var contractor = $(this).find('contractor').val();

                        alert(name);

                    });
             }

      });

但是当我想单击以运行我的 ajax 请求时,它会返回我的错误警报“找不到 XML 文件”。

 $("#showDB").click(function(){
        $.ajax({
            type: 'GET',
            url: 'dv.xml',
            dataType: 'xml',
            success: parseXml,  
            error: function() {
                alert('XML file not found.');

            }
        });
        function parseXml(xml) {
                //alert('XML file found.');
                $(xml).find('Employee').each(function(){
                    var name = $(this).find('name').text();
                    var email = $(this).find('email').val();
                    var jobtitle = $(this).find('jobtitle').val();
                    var address = $(this).find('address').val();
                    var workphone = $(this).find('workphone').val();
                    var homephone = $(this).find('homephone').val();
                    var cellphone = $(this).find('cellphone').val();
                    var fax = $(this).find('fax').val();
                    var contractor = $(this).find('contractor').val();

                    alert(name);

                });
         }

  });

任何人都知道为什么我无法在点击时获取 xml?我错过了什么?

【问题讨论】:

    标签: jquery ajax xml-parsing


    【解决方案1】:

    点击代码上的括号不好,使用这个:

    $("#showDB").click(function(){
        $.ajax({
            type: 'GET',
            url: 'dv.xml',
            dataType: 'xml',
            success: parseXml,  
            error: function() {
                alert('XML file not found.');
    
            }
        });
      }); // needed to close it
    

    编辑:“doc”调用没有失败的原因是 ajax 和函数被封装在 load annon 函数中 - 但是您的 onclick 代码缺少一些右括号

    【讨论】:

    • 所以把功能放在点击之外?
    • 是的,或者像您为“错误”处理程序分配所做的那样将其创建为一个匿名函数。无论哪种方式都“很好”,但如果您创建的函数将被多个元素使用,那么将其标准化并使其可用于“任何需要该接口的元素”将是一种更好的编码实践
    • 我这样做了,但无济于事...但是我发现了问题,我的#showDB按钮在一个表单中,因此试图提交表单并将整个事情捆绑起来...
    • 我在表单标签中有 #showDB 按钮,如下所示:
      我关闭了表单标签并它工作正常。 我希望这可以帮助其他人在这个问题上苦苦挣扎......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多