问题:
Uncaught SyntaxError: Unexpected token <
我尝试了什么
请求:Jsonp
响应:返回 XML 响应 200。
跨域请求这就是为什么使用数据类型:jsonp
脚本代码:
$.ajax({
url: "some url",
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
type: "POST", /* or type:"GET" or type:"PUT" */
data:myusername,
crossDomain: true,
dataType: 'jsonp',
data: {
'name':myusername
},
success: function (result) {
console.log(result);
},
error: function () {
console.log("error");
}
//});
});
这里 AJAX 响应是 XML。
但有人可以告诉我如何解决意外的 token 问题。
响应是 XML。
我发现的解决方案是第三方请求
var urljson='cross-damin-url';
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' +
encodeURIComponent('select * from xml where url="' + urljson + '"') +
'&format=xml&callback=?';
$.getJSON(yql, function (data) {
console.log(data.results[0]);
});
欢迎任何建议。
最佳答案
问题出在“dataType: 'jsonp'”行。以这种方式设置,ajax 调用期望结果是 jsonp(在回调中包装为参数的 json 对象...),如果您正在进行跨域调用(由于 CORS),这非常有用。您必须设置“dataType:'xml'”
编辑 考虑到你必须进行 CORS 调用,你必须更改 api 的输出,至少做出类似
callbackName({value:'<your><xml>...</xml></your>'})
并从字符串中解析 xml “callbackName”是页面中声明的函数或方法的名称,该函数或方法进行 ajax 调用,并将解析来自 api 的 json...例如:
function callbackName(result) {
console.log($.parseXML(result.value));
}
关于javascript - 未捕获的语法错误 : Unexpected token < using Jsonp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46565293/