私は PhoneGap を使用して Android 用のアプリケーションを設計しています。これは基本的に Web サービスを呼び出しますが、今のところ、戻り値として何か (文字列としましょう) を返すメソッドが含まれます。最後に、Windows Azure データベースに対して実行するクエリを Web サービスで処理できるようにします。
私が選んだ Web サービスは、Ajax 対応の WCF サービスでした。これは正しい選択でしたか?
これがどのように機能するかを確認するために、簡単なアプリケーションを試しました。まず、Visual Studio で新しいプロジェクトを作成し、次に Ajax 対応の WCF サービスを作成しました。簡単なメソッドを 1 つだけ追加しました。
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat= WebMessageFormat.Json)]
public string GetName()
{
return "Hello world";
}
Web.config はまったく変更していません。
次に、Eclipse を開き、テキスト ボックスとボタンだけを持つ新しい PhoneGap Android アプリケーションを作成しました。このボタンをクリックするたびに、Web サービスが呼び出され、次のメソッドを使用して戻り値がテキスト ボックスに表示されます。
$('#button').click(function(){
$.ajax({
type: "GET",
url: "http://localhost:11634/MobileService.svc/GetName",
contentType: "application/json",
dataType: "json",
success: function (result) {
$("#textbox").text(result);
},
error: function (textStatus) {
$("#textbox").text(textStatus);
}
});
});
この方法を使用しようとすると、Firefox で次のエラーが発生します"NetworkError: 405 Method Not Allowed
。jsonp
次に、クロス ドメイン リクエストを許可するために
、データ型を に変更して、AJAX 呼び出しの前に次の行を追加しようとしました: $.support.cors = true;
. Firefox では、次のエラーが表示されます。
SyntaxError: invalid label
{"d":"Hello world"}
正しい方法を使用しているかどうか、およびクロスドメインの問題を処理する方法について教えてください。