Javascript、AJAX、および「POST」情報をサーバーに送信する際に奇妙な問題が発生しています... iOS と Android の両方で実行されるHTML5 / Javascript (プレーン JS、jQuery なし!) ゲームで作業しています。繭JS。POST メソッド(GET ではなく)を使用してサーバー スクリプトに渡す必要があるものがあります。Androidデバイス (Nexus 5) でテストするときは完全に機能しますが、iOS デバイス(iOS 7 を搭載した iPhone 4 および 5 ) でテストするときは完全に機能します。 )、サーバー側のスクリプトは何も受け取りません(ただし、使用される方法はAndroidとまったく同じです)...
Safariのキャッシュ「POSTS」などについて読んだことがありますが、CocoonJSを使用しているため、それが私の問題にどのように関連するのか正確にはわかりません...
送信前に情報をログに記録しており、適切に収集されています。ただし、サーバー側のスクリプトからログに記録しようとすると、空です...
これが私がクライアント側でやっていることです:
create_XHR: function(){
var XHR = null;
if (window.XMLHttpRequest){
XHR = new XMLHttpRequest();
}
else if(window.ActiveXObject){
try {
XHR = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
XHR = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else {
alert("Your navigator is old to run objets XMLHTTPRequest...");
XHR = false;
}
return XHR;
},
ajax_post: function(page, data, share) {
var XHR = game.create_XHR();
XHR.open("POST", page, true);
XHR.onreadystatechange = function() {
if (XHR.readyState === 4 && (XHR.status === 200 || XHR.status === 0)) {
// Do some stuff here
}
};
console.log("DATA TO BE PASSED: "+data.imgdata);
XHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
XHR.send(data.imgdata);
},
奇妙な部分は、AJAX 呼び出しが返されたときに行っている「作業」が実際に行われているため、AJAX 呼び出しはエラーなしで返されることです...
これらの関数はコードの別の部分で呼び出され、DATA TO BE PASSED
ログにはサーバーに送信される必要があると予想されるデータが表示されます...ただし、サーバースクリプト内でログに記録しようとすると...
<?php
$imageData = '';
if(isset($_POST['imgdata']))
{
$imageData = $_POST['imgdata'];
}else if(isset($_GET['imgdata'])){
$imageData = $_GET['imgdata'];
}else{
$imageData = $GLOBALS['HTTP_RAW_POST_DATA'];
}
mail(MYMAIL,"LOG","POST: ".$_POST['imgdata']." \n GET: ".$_GET['imgdata']." \n GLOBALS: ".$GLOBALS['HTTP_RAW_POST_DATA']." \n IMGDATA: ".$imageData);
メッセージは完全に空であるためGET
、 もも も 何POST
もGLOBALS
キャッチしません... したがって、私のアプリは実際には何も送信していないと思います。ただし、まったく同じコードが Android デバイスでも機能するため、何が間違っているのかわかりません...
何が起こっているのか、どうすれば解決できるのか誰でも知っていますか?
あなたの時間と労力を前もって感謝します! :)