我有一个代码,用于从careerbuilders api中提取数据。在浏览器上测试该链接时效果很好,但是我似乎无法从中解析任何内容。小心告诉我哪里错了?

html代码:

<div class="main">
    Companies:
</div>


jQuery代码:

$(document).ready(function () {
        $.ajax({
        type: "GET",
        url: "http://api.careerbuilder.com/v1/jobsearch?DeveloperKey=WDHL4Z86PBQY29Z7ZQQS&Location=Canada",
        dataType: "xml",
        success: xmlParser(xml)
    });

});

function xmlParser(xml) {
    $(xml).find("JobSearchResult").each(function () {
         $(".main").append(
             $(this).find("Company").text()
         );
    });

}


这是一个jsfiddle实时示例:http://jsfiddle.net/Cc4SY/

最佳答案

在您的情况下,不会定义xml。您必须将成功回调包装在另一个函数中,后者将依次调用您的xmlParser函数。

您正在做的是调用xmlParser函数,并将返回值分配为成功回调,这不是故意的。因此,您将其包装在另一个函数中,并从该函数调用xmlParser,在这种情况下,xml响应将正确地传递给xmlParser,并且可以解析它。

代码可能如下所示:

 $(document).ready(function () {
            $.ajax({
                method: "GET",
                url: "http://api.careerbuilder.com/v1/jobsearch?DeveloperKey=WDHL4Z86PBQY29Z7ZQQS&Location=Canada",
                dataType: 'xml',
                success: function (response) {
                    xmlParser(response);
                }
            });
    });

function xmlParser(response){
    var xml = $.parseXML(response);
    $(xml).find("JobSearchResult").each(function () {
        $(".main").append(
            $(this).find("Company").text()
        );
    });
}

09-11 08:14