私はiPhone用のWebアプリを設計しています。ユーザーがボタンを押すと、3 つの値を含む JSON メッセージが Web サーバーに送信され、JSON ステータス応答が返されます。JavaScriptは以下です。
var args = {};
args.Val1 = parseInt(document.getElementById("Val1").value);
args.Val2 = parseInt(document.getElementById("Val2").value);
args.Val3 = parseInt(document.getElementById("Val3").value);
var jsonString = JSON.stringify(args);
if(window.XMLHttpRequest) // code for IE7+, Firefox, Chrome, Opera,
{
ajaxReq = new XMLHttpRequest();
}
else if(window.ActiveXObject) // code for IE6, IE5
{
ajaxReq = new ActiveXObject("Microsoft.XMLHTTP");
}
ajaxReq.onreadystatechange=function()
{
if (ajaxReq.readyState==4 && ajaxReq.status==200)
{
rsp = JSON.parse(ajaxReq.responseText)
if(parseInt(rsp.Status) == 0)
{
document.getElementById("Status").value = "OK"
}
else
{
document.getElementById("Status").value = "Fail"
}
}
}
ajaxReq.open("POST", "Handler.json", true);
ajaxReq.send(jsonString);
これをデスクトップ ブラウザ (Firefox または Chrome) でテストすると、問題なく動作します。サーバーはメッセージを取得し、ステータスを返し、ステータスが画面に表示されます。Safari を使用して iPhone でブラウジングすると、動作しません。ステータス応答が得られず、ブラウザが「ロックアップ」して、ボタンを押しても JSON メッセージが送信されないことがあります。
何か案は?