2

我正在尝试从服务中获取 json 数据,但是当我使用带有数据类型“JSONP”的 $.ajax 时出现 parseError:

$.ajax({
    url: url,
    dataType: 'JSONP'
})
.error(function(XMLHttpRequest, textStatus, errorThrown) { ... })
.done(function(data) { ... });

如果我尝试使用“JSONP”以外的其他数据类型,则会返回 404 错误。

我怎样才能得到一个字符串而不是解析 json,我相信 json 中有一些换行符会导致解析错误。

这是小提琴http://jsfiddle.net/FSEZQ/3/

4

1 回答 1

3

那是 JSON,不是 JSONP。

例如,这是 JSON:

{"key": "value"}

这是 JSONP:

callback({"key": "value"})

如果服务不提供 JSONP,浏览器会阻止您获取它(同源安全限制)。

人们绕过同源限制的方式包括一些服务器利用率。您可以在 PHP 中编写正确的代码,也可以使用 AnyOrigin 之类的服务。

这是一个 AnyOrigin 示例。

$.getJSON('http://anyorigin.com/get?url=metservice.com/publicData/tides2MonthAuckland&callback=?', function (data) {
    $('#result1').html(JSON.stringify(data.contents));
}).fail(function (XMLHttpRequest, textStatus, errorThrown) {
    $("#result2").html(textStatus);
});

...和伴随的小提琴

下面是一个示例,展示了如何使用这些数据。

于 2013-08-05T09:56:01.897 回答