2011-12-19 21 views
1

私はajax呼び出しをしようとしています。これはJSONオブジェクトのようなものを返します。Uncaught SyntaxError:予期しないトークン:&無効なラベルエラー

{ 
id: 6, 
success: "true" 
} 

私のAJAX呼び出しがある:

window.foobar = function(foo){ 
    $.ajax({ 
      url: "http://foobar.com/sites/foo/", 
      dataType: "jsonp", 
      success: function (data) { 
     alert(data); 
      }, 
      error: function() { 
      } 
     }); 
} 

このAJAX呼び出しは、クロスサイト・コールです。 はchromeではそれができます:

invalid label 
http://localhost:8080/sites/foo/?callback=jsonp1324336100888&_=1324336100894 
Line 1 

をしかし、私はsame domainから呼び出すときにそれが正常に動作します:Uncaught SyntaxError: Unexpected token : firefoxではそれができます。

答えて

0

JSONPをサポートすると主張している場合は、実際にサポートする必要があります。あなたのコードは有効なJSONですが、有効ではありませんJavascript:JSONPリクエストに対する応答は有効なJavascriptでなければなりません。 (具体的には、{}はオブジェクトリテラルではなくブロックを区切るため、コードは無効です。)

JSONPを実装する場合、JSONPを実装する場合は、関数の呼び出しでデータをラップする必要がありますURL、callbackパラメータで指定します。したがって、この場合には、次のコードをポストする必要があります。

jsonp1324336100888({ 
id: 6, 
success: "true" 
}); 

明らかにあなたが呼び出す必要がある関数の正確な名前はcallback URLのパラメータに依存します。

+0

コードは_ALmost_有効です。JSON:完全に有効なJSONのプロパティ名は二重引用符で囲む必要があります。 (JavaScriptは、JSオブジェクトのリテラルが引用されていないプロパティ名を持つことができるため、これを許しています。) – nnnnnn

+0

@nnnnnn本当にありがとうございます。 – lonesomeday

関連する問題