2011-08-08 4 views
0

これはjQuery.ajax()は

$.ajax({ 
    "url": url, 
    "dataType" : "json", 
    "async" : false, 
    "success" : function(e) { 
     retval = e; 
    }, 
    "complete" : function(jqXHR, textStatus) { 
     debugger; 
    }, 
    "error" : function(jqXHR, textStatus, errorThrown) { 
     debugger; 
    }, 
    "xhrFields": { 
     withCredentials: true 
    } 
}) 

url(チャンネル名に置き換えられて{0}

スクリプトブレーク例http://api.justin.tv/api/channel/show/{0}.jsonのためである私のJavascriptであるX-ドメインソースからJSONを取得するにParseErrorですを取得しますtextStatus "parseserror"でエラーが発生しました。また、jqXHRにはresponseTextがありませんが、ロードしようとしたすべてのjsonファイルがUncaught SyntaxError: Unexpected token :というリソースタブに表示されています。また、すべてのAjaxリクエストに対して警告Resource interpreted as Script but transferred with MIME type application/json.を取得しています。さらに、errorコールバックが実行される前に、ajax呼び出しの下のコードが実行されるため、xドメイン要求は非同期ではないようです。

私の目標は、解析されたJSONオブジェクトをすべてのリクエストで実行するajaxコール成功コールバックをeとすることです。このコードは、ローカルのjson ajax呼び出しではすでに動作していますが、xドメインのものではありません。 x-domain呼び出しによって返されたjsonは有効であり、parsererrorsになるべきではありません。

誰もが任意のアイデアを持っている場合は、あなたのURLの最後に追加してみてください?JSONP =

おかげ

答えて

0

あなたは$.ajax()jsonp支援を検討する必要があるとしている - あなたはあなたがあなたの外のドメインにXmlHttpRequestsですることはできませんsame origin policyを、違反しているhttp://api.jquery.com/jQuery.ajax/

。 JSONPではこれを回避することができます。

justin.tvがJSONPをサポートしているかどうかわかりません。基本的には、JSONP呼び出しで提供されているメソッドの中にあなたを送ってくる応答をラップする必要があります。

1

を共有してください。あなたは通常、JSONP =?これらの2つのURL

http://api.justin.tv/api/channel/show/342.json?jsonp=

http://api.justin.tv/api/channel/show/342.json

の違いを参照してください正しいJSONP

> http://api.justin.tv/api/channel/show/{0}.json?jsonp= 

を取得するためにコールバックを指定する必要が周りに括弧を追加あなたはそれをクロスドメインを使用することができますので、データ。

+1

Better: 'dataType'を' 'jsonp'に設定し、オプション' jsonp: 'jsonp''を追加してください。 docs:http://api.jquery.com/jQuery.ajax/を参照してください。 –

関連する問題