20

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

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

PS我必须使用dataType:“jsonp”,因为如果我使用“json”,我也会遇到跨域问题。

4

3 回答 3

21

如果您使用的是 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 所指出的那样修复)

于 2012-05-08T22:23:07.557 回答
11
succes : function(data){

这是一个错字:

success : function(data){
于 2012-05-08T22:16:52.113 回答
1

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

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

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

于 2012-05-08T22:21:13.783 回答