Webページに次のコードを設定しています(現時点では非公開):
function DoRequest(httpReq,url,param){
httpReq.open("POST",url,false);
httpReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
httpReq.send(param);
httpReq.onreadystatechange = function() {
if (httpReq.readyState==4) {alert(httpReq.responseText);}
}
if(httpReq.status==200){
return httpReq.responseText;
} else {
return httpReq.status;
}
}
これを介してリクエストを実行すると、PCでfirefox、safari、つまり7-9、chromeなどを介して、200ステータスとテキストが正しく返されます。
これとまったく同じページを iPhone または iPad で実行すると、ステータスが 0 になり、応答テキストが何も表示されず、正しい応答テキストのあとがきのコールバック関数からアラートが返されます。モバイル サファリ ブラウザのコードを処理する前に、リクエストが完了するのを待っていないように見えますが、強制的に待機させる方法はありますか、それともフラグが見えませんか?
また、Safariでonreadystateコールバックのみを取得します。他のブラウザーでは実行しません。何らかの理由で非同期を実行する代わりに非同期を実行するようにトリガーしていた場合に備えて、関数を削除しようとしましたが、サイコロはありません3 番目のパラメーターは false です。
またhttpRq.open("POST",url);
、3番目のパラメーターと onreadystatechange 関数を使用せずに試してみましたが、まだ非同期で実行されています。
URL は絶対パスです。