jQuery从restful web服务解析xml?

时间:2013-09-28 03:20:13

标签: javascript jquery ruby-on-rails xml xml-parsing

我有一个从职业生涯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/

2 个答案:

答案 0 :(得分:2)

在您的情况下,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()
        );
    });
}

答案 1 :(得分:0)

我认为现在它正在发挥作用:

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

});

在这里小提琴:http://jsfiddle.net/Cc4SY/2/

控制台响应:XMLHttpRequest无法加载http://api.careerbuilder.com/v1/jobsearch?DeveloperKey=WDHL4Z86PBQY29Z7ZQQS&Location=Canada。 Access-Control-Allow-Origin不允许原点http://fiddle.jshell.net

这是一个jsfiddle限制。