我正在尝试从服务获取json数据,但在使用数据类型为“JSONP”的$ .ajax时获取parseError:
$.ajax({
url: url,
dataType: 'JSONP'
})
.error(function(XMLHttpRequest, textStatus, errorThrown) { ... })
.done(function(data) { ... });
如果我使用“JSONP”以外的其他数据类型进行尝试,则会返回404错误。
我怎么能得到一个字符串而不是解析json,我相信在json中有一些导致解析错误的换行符。
答案 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,显示了如何使用这些数据。