2011-10-12 10 views
1

$ getJSONを使用してリンクからJSON文字列をプルダウンしています(例:/ login?user = foo & pass = bar)。このリンクをブラウザに直接接続すると、「ファイルダウンロード」プロンプト(「which is:application/json」)が表示されます。 getJSONはそのリンク上では動作しません。getJSONは平文にのみ応答し、それ以外の場合は動作しません。

ただし、メモ帳で "ファイルのダウンロード"プロンプトでファイルを開き、そのテキストをプレーンテキスト(.txtファイル)としてサーバーにホストし、そのリンク(つまり/jsondata.txt)でgetJSONを呼び出すと、完全に機能します。

バックエンドで何かを変更する機能はありません。

ここで何が起こっているのでしょうか?基本的には、JSONファイルをプレーンテキストとしてホストするとJSONファイルをプルダウンできますが、デフォルトでは返されません。

EDIT はここで非常に簡単...私のコードです:

$.getJSON("http://EXTERNALHOSTNAME.com/WEBSERVICE.svc/login?username="+document.frmLogin.email.value+"&password="+document.frmLogin.password.value+"", function(data) { 

alert("it worked!"); 
}); 

私はそれが動作.txtファイル、Dropboxにリンクして、その行を交換する場合:

//$.getJSON("http://dl.dropbox.com/u/NUMBERS/login.txt", function(data) { 
+0

getJSONコードを投稿できますか? – Joe

+1

私はこれが既に答えられていると思います[ここ](http://stackoverflow.com/questions/26620/how-to-set-encoding-in-getjson-jquery/26681#26681) – PPvG

+0

どういう意味ですか?うまくいかない"?あなたは正確なエラーを提供できますか?そのリンクは同じドメインまたは別のドメインにありますか(問題は他の場所にある可能性があるためです)。また、あなたがファイルダウンロードを取得した場合、そのリンクは 'content-disposition'ヘッダhttp://support.microsoft.com/kb/260519である可能性があります。私は$ .getJsonがそのように振る舞う方法を知らない。 – Stefano

答えて

0

あなたはjavascriptから他のドメイン(元のドメイン以外)を呼び出すことはできません。 EXTERNALHOSTNAMEがjsonpレスポンスをサポートしている場合は、&callback=?を使用して問題を解決できます。そうでない場合は、サーバー上にその応答をルーティングするスクリプトを置くことができます。これにより、自分のドメインから発信されたものとして表示されます。それ以外の場合は、EXTERNALHOSTNAMEのページを配信できれば(この疑いはあります)、このajax呼び出しを実行するドメインから同じ元のルールに違反しないようにiframeを配信し、親フレームにそのデータを密輸することができます。

関連する問題