我在使用 Javascript、AJAX 和向服务器发送“POST”信息时遇到了一个奇怪的问题......我正在开发一个在 iOS 和 Android 上运行的HTML5/Javascript(纯 JS,没有 jQuery !)游戏茧JS。我需要使用POST 方法(不是 GET)将一些东西传递给服务器脚本:它在 Android设备(Nexus 5)中测试时完美运行,但是在iOS 设备中测试时(iPhone 4 和 5 与 iOS 7 ),服务器端脚本什么也没有收到(尽管使用的方法与 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 设备,我不知道我可能做错了什么......
任何人都知道会发生什么,我该如何解决?
提前感谢您的时间和精力!:)