【问题标题】:$.ajax and JSONP. ParseError and Uncaught SyntaxError: Unexpected token :$.ajax 和 JSONP。 ParseError 和 Uncaught SyntaxError: Unexpected token :
【发布时间】:2016-11-29 16:55:49
【问题描述】:

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

我正在尝试从 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。它必须由服务器支持并返回。如果没有,你就不走运了。如果您可以控制服务器,请使其支持 JSONP。
  • 我也在为服务器编程 ;)
  • 这可能不会影响这个答案,但可能会帮助其他用户 - 通常 uri 的参数允许您设置文件格式。如果您收到此错误,请确保将其设置为 format=jsonp!

标签: jquery ajax json


【解决方案1】:
succes : function(data){

这是一个错字:

success : function(data){

【讨论】:

  • 不,对不起,我在这里写错了,在代码中写的是“成功”
【解决方案2】:

首先,您的成功参数中有错字;你错过了结局。此外,当您执行 JSONP 请求时,您需要以 JSONP 格式返回您的 JSON 信息;其中应包含回调令牌作为返回字符串的一部分。示例 JSONP 字符串如下所示:

yourcallbacktoken({"id":3,"login":"pepe","key":"0D1DBA4BE87E02D43E082F9AA1ECFDEB"})

查看此页面以获取有关 JSONP 规范的更多信息:http://devlog.info/2010/03/10/cross-domain-ajax/

【讨论】:

    【解决方案3】:

    如果你使用的是 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);
        }
    });
    

    当然也修复了success 所注明的@voyager

    【讨论】:

    • 所以在服务器中我必须将static JSONObject Login(String login, String password) throws JSONException{ 更改为static String Login(String login, String password){ ... json.put("id", id); json.put("login", login); json.put("key", key); return("myJsonMethod("+json+");");
    • @PabloPostigo,您可以使用JSONPObject class
    • 遇到了类似的问题。添加 jsonp: false 是为我解决的问题
    猜你喜欢
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 2018-06-18
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    相关资源
    最近更新 更多