JSON parseError - 将json作为字符串

时间:2013-08-05 09:45:23

标签: javascript json

我正在尝试从服务获取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/

1 个答案:

答案 0 :(得分:3)

那是JSON,而不是JSONP。

例如,这是JSON:

{"key": "value"}

这是JSONP:

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

如果该服务未提供JSONP,则浏览器会阻止您获取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);
});

...和accompanying fiddle

这里有example,显示了如何使用这些数据。