使用JSONP读取XML

时间:2013-10-14 14:06:51

标签: jquery jsonp

我已经在这里看到了类似问题的一些答案,并给了他们一个很好的阅读!我面临的问题是,我无法获得使用JSONP的TfL循环租用Feed,而这只返回404,而如果您将链接放在浏览器中,它就在那里:

$(document).ready(function(){

    // CYCLE HIRE DATA

    var cycleHireUrl = 'http://www.tfl.gov.uk/tfl/syndication/feeds/cycle-hire/livecyclehireupdates.xml';

    $.ajax({
        type: "GET",
        dataType: "jsonp",
        url: cycleHireUrl,
        success: function(data) {
            $.each(data["station"], function(index, item) {
                var name = item.name;
                $('.cycles').append('<div>' + name + '</div>')
            });
        }
    });

});

我似乎在控制台中的网址上附加了一串额外的内容,这可能会导致错误:

GET http://www.tfl.gov.uk/tfl/syndication/feeds/cycle-hire/livecyclehireupdates.xml?callback=jQuery110209581123229581863_1381759036915&_=1381759036916 404 (Not Found) 

有人有这个问题吗?

2 个答案:

答案 0 :(得分:0)

JSONP代表带有填充的JavaScript Object Notation。这意味着包含在函数调用中的标准JSON字符串。该函数被执行但是如果页面上有一个带有该名称的JavaScript函数(或者由jQuery动态添加)。如果您的HTML中没有具有相同名称的函数,则调用将失败,如果该JSONP块中的字符串不是JSON,则它将失败。在这种情况下,404告诉您服务不愿意返回任何格式的内容。

答案 1 :(得分:0)

从我所看到的,TFL提要通常意味着从您自己的服务器使用,而不是从客户端Javascript使用。您必须注册特定IP地址才能使用这一事实,这有点暗示。循环馈送当然看起来好像只是XML,而不是JSON或JSONP,可能就是出于这个原因。

我认为,如果你想提供循环可用性结果,那么你唯一的选择是JSONP是设置一个查询TFL的服务器,读取XML响应,将你需要的东西转换为JSONP并将其返回给你的客户端。