20

まず、いくつかのトピックで自分の問題に対する答えを探していましたが、自分のコードで動作する解決策を見つけることができませんでした。

サーブレットから回答を得ようとしていますが、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

2 番目のエラー (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);
    }
});

もちろん、@voyagerが指摘したsuccessように修正します)

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

それはタイプミスです:

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

まず、成功パラメータにタイプミスがあります。あなたはエンディングを逃しました。また、JSONPリクエストを実行する場合は、JSON情報をJSONP形式で返す必要があります。これには、リターン文字列の一部としてコールバックトークンを含める必要があります。サンプルのJSONP文字列は次のようになります。

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

JSONP仕様の詳細については、次のページを参照してください:http: //devlog.info/2010/03/10/cross-domain-ajax/

于 2012-05-08T22:21:13.783 に答える