我有以下Javascript代码:
$.getJSON('data.jsonp?callback=abcde', function(data) {
console.log(data);
})
.fail(function(jqXHR, textStatus, errorThrown) {
console.log("error " + textStatus);
console.log("incoming Text " + jqXHR.responseText);
console.log(errorThrown);
})
但它会导致parseError
。这是传入的文本:
abcde({"data":"value"});
这是错误:
SyntaxError: Unexpected token a in JSON at position 0
我可能错过了一些非常明显的东西,但我已经完成了我的研究并找不到它。有人能说出我错过的东西吗?
答案 0 :(得分:0)
尝试使用callback=?
代替callback=abcde
。来自documentation:
如果URL包含字符串" callback =?" (或类似的,由服务器端API定义),请求被视为JSONP。有关详细信息,请参阅
$.ajax()
中有关jsonp数据类型的讨论。
jQuery查找此特定字符串,然后替换其内部生成的函数名称。
$.getJSON('data.jsonp?callback=?', function(data) {
console.log(data);
})
.fail(function(jqXHR, textStatus, errorThrown) {
console.log("error " + textStatus);
console.log("incoming Text " + jqXHR.responseText);
console.log(errorThrown);
})
如果您需要使用自己的回调函数,我认为您必须使用$.ajax()
而不是$.getJSON()
快捷方式。
$.ajax({
url: "data.jsonp",
type: "get",
dataType: 'jsonp',
jsonp: "abcde"
})
.done(function(data) {
console.log(data);
})
.fail(function(jqXHR, textStatus, errorThrown) {
console.log("error " + textStatus);
console.log("incoming Text " + jqXHR.responseText);
console.log(errorThrown);
});