私はこれで数日間頭を悩ませています。
プレーンな古い html と jquery を使用して、モバイル固有の Web サイトを作成しました。
サービス スタックを使用して記述されたサービスからデータを取得するために、json 応答で ajax を使用しました。
すべてがデスクトップから完全に正常に動作し、私が試した多くの異なるモバイル(Android、iPhone、bbなど)
ただし、私のハンドセット (ボーダフォンの Samsung Galaxy S2) に特定の問題があるようです。
ハンドセットが Wi-Fi に接続されている場合、ajax は完全に機能し、json オブジェクトはサービスから受信され、正しく処理されます。
ただし、モバイル データの場合、応答は json ではなく、サービス スタック Web ページとして返されます (json を正しく返すように指示されていないようです)。
ヘッダーがボーダフォンまたは何かによって取り除かれているのではないかと思いますか?
これは使用されている ajax 呼び出しです
$.ajax({
url: sgee.ApiUrl + "/api/GetRegionId/" + sgee.App.postcode,
type: 'GET',
dataTye: 'json',
contentType: "application/json;charset=utf-8",
cache: false,
success: function (data) {
if (data.success) {
sgee.App.EnquiryId = data.enquiryId;
sgee.App.RegionId = data.regionId;
sgee.App.RegionName = data.regionName;
$("#regionTxt").html("We have identified that you live in the " + sgee.App.RegionName + " supply region.");
sgee.EndLoading(250);
sgee.HideStep(2);
} else {
sgee.SetValidationError("#pcodeControl", "Please enter a valid UK postcode");
}
},
error: function () {
sgee.SetValidationError("#pcodeControl", "Please enter a valid UK postcode");
sgee.SendError("Error on /api/GetRegionId/", "sgee.Step1");
},
complete: function () {
}
});
これは予想されるデータです
{"postCode":"s63","regionId":14,"regionName":"YORKSHIRE","enquiryId":578106,"success":true,"returnedId":0}
そして、モバイルで実行しているとき、これは私が受け取っているものです(長いので全体は含まれませんが、応答タイプを設定したり、ページを閲覧したりしていないかのようなhtml応答です)
<!doctype html>
<html lang="en-us">
<head>
<title>GetRegionId Snapshot of 03/08/2012 13:59:50</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
デバッグが不可能であるため、これは本当に私を怒らせています(少なくとも私は方法を見つけることができません)コードをステップ実行するためにAndroid Chromeリモート開発者ツールを使用していますが、モバイルネットワーク上にあるため、httpリクエストとレスポンスをキャプチャできません.