为什么在jquery中成功调用ajax后,此函数是否加载? (更新)

时间:2015-07-22 11:37:47

标签: javascript jquery ajax

我使用上个月曾经工作的the tutorial here,但现在还没有。我已经复制了下面的相关代码。

<script>
        (function($) { //In case jQuery no conflict is being used
            $(document).ready(function() { //wait for document ready
                $("#loaddaold").click(function () {
                    alert("123");
                    //$( "#duplicateshere" ).empty();
                    $.ajax({
                        type: "GET",
                        url: "ajax-oldmessages.php",
                        dataType: "xml",
                        success: xmlParser
                    });
                });
            });
            function xmlParser(xml) {
                alert("456");
                //$("#rev2").slideDown();
                $(xml).find("result").each(function () {
                $("#appendhere").append('<a href="/debates/' + $(this).find("id").text() + '">' + $(this).find("title").text() + '</a><br>');
                //$(".book").fadeIn(1000);
                });
            }
        })(jQuery);
        // http://www.webdevdoor.com/jquery/javascript-delay-input-field-change/
        // http://papermashup.com/parse-xml-with-jquery/
        // (not used) http://www.paulund.co.uk/process-each-node-of-xml-in-jquery
        </script>

问题是在成功的ajax请求之后没有调用xmlParser()函数。它显示123警报但不显示456警报。我做错了什么,或者教程错了吗?

ajax okay http 200

以前在另一个问题上,我被告知这是一个CORS问题,但是我在计算机上调用该文件,在我的例子中,那么现在的问题是什么?

1 个答案:

答案 0 :(得分:2)

如果您正在使用

dataType: "xml text"

如果你的回复中有一个无效的xml,那么成功就不会消失

检查您的回复,因为它无效...如果您想测试您的代码只需更改

{{1}}

您将看到确认无效xml数据的警报(456)

我已经复制了您的问题,并在我的回复中放入了有效的xml,代码运行正常

此外,如果您希望的数据只是一个包含ID的字符串,请尝试使用

{{1}}

注意:从jQuery 1.5开始,jQuery可以将dataType从Content-Type标头中收到的内容转换为您需要的内容