StackOverflowには多くの関連性の高い質問がありますが、私と一緒にお立ち寄りください。クロスドメインajaxとjQueryを使ったRESTサーバー
私はPhoneGapを使用してモバイルアプリを作成しています。だから、私はjQuery Mobile、HTML、CSSでアプリケーションを書いています。
問題は次のとおりです。サーバーはREST実装です。つまり、新しい 'エンティティ'(ユーザー、車、ホットベイビーなど)を作成するには、サーバーはPOSTリクエストをリッスンします。既存の「エンティティ」を返すことによって、サーバーがGETリクエストに応答する場合。
jQueryからPOSTリクエストを送信するモバイルアプリケーションを取得するにはどうすればよいですか?これは簡単なことですが、jQueryはPOSTを指定してもjsonpデータ型リクエストをGETに変更します。また、サーバーとアプリケーションは同じドメインにないので、この要求はドメイン間で送信されるため、データ型をjsonに設定することはできません。
私はこれを長時間4時間続けています。私はGETリクエストだけを気にしていれば目の瞬きの中で動作させることができますが、サーバー上でPOSTを取得することは今まで不可能であることが証明されています。ここで
は、サーバー側のコードを簡略化したものである:
class GatewayService extends Service[Request, Response] {
def apply(request: Request) = {
request.method -> Path(request.path) match {
case GET -> Root/"car" => {
println("---Get car---")
}
case POST -> Root/"car" => {
println("---New car---")
}
case _ => {
println("---Other method type ---")
}
}
}
そしてここでは、jQueryのコードです:あなたはjQueryを使ってPOSTリクエストのクロスドメインの取得上の任意のアイデアを持っている場合は
function serverRequest(formId, url) {
var result = ""
var formData = readFormData(formId);
console.log("Submitting form:\n"+JSON.stringify(formData));
$.ajax({
type:"POST",
url: url,
data: JSON.stringify(formData),
dataType: "json",
success: function(response){
alert(response['message']);
console.log("Received response: "+JSON.stringify(response));
result = response;
},
error: function(jqXHR, textStatus, errorThrown){
console.log(
"The following error occured: "+ jqXHR,
textStatus, errorThrown
);
},
complete: function(){
//Nothing here for now
}
});
return result;
}
、あなたの秘密を分けてください。
更新:
これまでのところ、あなたが単にjQueryのモバイル上で開発されたモバイルアプリから直接RESTサーバーにアクセスすることができないことが表示されます。これは正しいです?
EasyXDMはCORSの優れた実装で、PhoneGapの魅力のように機能します。ただし、Webサービスを制御する必要があります。 http://easyxdm.net/wp/ – sustainablepace
ありがとうございます。私はこれを調べます。モバイルデバイス(jQuery Mobileを使用)と既存のRESTサーバーとの統合はどのような方法でも複雑になるはずです。 – Jack