首先,我一直在多个主题中寻找问题的答案,但找不到适合我的代码的解决方案。
我正在尝试从 servlet 获取答案,如果我访问 http://XXXZZZ/Servlet/Login?login=pepe&pass=1234
我会按预期收到有效的 JSON:
{"id":3,"login":"pepe","key":"0D1DBA4BE87E02D43E082F9AA1ECFDEB"}
但是当我尝试使用 $.ajax 进行相同操作时,出现 2 个错误。
$.ajax({
type : "Get",
url :"http://XXXZZZ/Servlet/Login",
data :"login="+login+"&password="+pass,
dataType :"jsonp",
success : function(data){
alert(data);},
error : function(httpReq,status,exception){
alert(status+" "+exception);
}
});
第一个错误(在弹出窗口中):
parsererror Error: jQuery17104145435250829905_1336514329291 was not called
第二个错误(在 Chrome 控制台中):
Uncaught SyntaxError: Unexpected token : Login 1
(我正在等待 JSON)。
附注我必须使用 dataType : "jsonp",因为如果我使用 "json"我也会遇到跨域问题。
最佳答案
如果您使用 jsonp 那么语法是错误的
你需要返回
myJsonMethod({"id":3,"login":"pepe","key":"0D1DBA4BE87E02D43E082F9AA1ECFDEB"});
并添加到您的 ajax 请求选项
jsonp: false,
jsonpCallback: "myJsonMethod"
所以
$.ajax({
type : "Get",
url :"http://XXXZZZ/Servlet/Login",
data :"login="+login+"&password="+pass,
dataType :"jsonp",
jsonp: false,
jsonpCallback: "myJsonMethod",
success : function(data){
alert(data);},
error : function(httpReq,status,exception){
alert(status+" "+exception);
}
});
(当然还要修复成功
,如 @voyager 所示)
关于jquery - $.ajax 和 JSONP。 ParseError 和未捕获的语法错误 : Unexpected token :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38583165/