シンプルな Jquery モバイル アプリケーションを作成しようとしています。私のセットアップは次のとおりです。
- jQuery クライアントはlocalhost:9090/myappで実行されています。
- サーバーはlocalhost:9010/paperboyで実行されています
- 私はWindowsを使用しているため、サーバー側ではPythonマイクロフレームワークである「ボトル」を使用して作成する単純なサーバーを使用しています。
- サーバーは要求に応じて json を返します。これは、Chrome または Firefox ではっきりと確認できます。
- 応答を検証しました。これは有効な JSON です。
私が直面している問題は、クライアントにサーバーの応答からjsonを読み取らせたいということです。
しかし、これはクロスドメインの問題であるため、そうすることができません。
クライアント用の私のajaxコードは次のとおりです。
$.ajax({
url: "http://localhost:9010/paperboy/toi",
type:"GET",
data:$(this),
dataType:"jsonp",
//jsonp:"callback", no support on the server
success:function(result){
console.log("ajax result: " + result);
},
error:function(e){
console.log("Error :" + e);
}
});
私のボトルサーバーコードは次のとおりです。
from bottle import route, run, template, response
from paperboy import getToiNews
''' call http://localhost:9010/paperboy/toi in browser'''
@route('/paperboy/:source')
def index(source='All'):
print "requesting news list for %s" % source
resultJson = getToiNews()
response.content_type = "application/javascript"
return resultJson
run(host='localhost', port=9010)
ただし、アプリケーションを実行すると、最初は「ajax origin policy error」が発生していましたが、コンテンツ タイプをサーバーに追加するとすぐに消えました。
現在、ajax 呼び出しはエラーなしで実行されますが、常に「エラー」ハンドラーが呼び出されます。いろいろ組み合わせてみましたがだめでした。私が理解できなかったのは、サーバーにjsonpサポートを追加することです。
この件に関するご支援に感謝いたします。また、ご協力いただきありがとうございます。
ありがとう。