jquery - $.ajax 和 JSONP。 ParseError 和未捕获的语法错误 : Unexpected token :

标签 jquery ajax json

首先,我一直在多个主题中寻找问题的答案,但找不到适合我的代码的解决方案。

我正在尝试从 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/

相关文章:

json - 如何在 Spring Data Rest 中使用内容协商?

jquery - 替换 jQuery 中的 HTML 实体

javascript - 在 dom 中遍历 li 元素

javascript - AngularJS 从 Controller 外部的 AJAX 获取返回值

c# - asp :button click 上的 ASP.NET 异步回发

c# - 为什么我的 Nancy 调用 Bind<T>() 返回一个空对象?

jQuery 验证两个提交按钮

jquery - 如何在CSS中调整窗口大小时调整图像大小?

javascript - 如何从 JavaScript 函数中获取多个返回值

java - 应为 BEGIN_OBJECT 但实际为 BEGIN_ARRAY