我在使用Javascript,AJAX和发送" POST"时遇到了一个奇怪的问题。信息到服务器...我正在使用在iOS和Android上运行的 HTML5 / Javascript (普通JS,无jQuery !)游戏的 CocoonJS 即可。我需要使用 POST方法(而不是GET)将一些内容传递给服务器脚本:在Android 设备(Nexus 5)中进行测试时效果很好,但是,在 iOS设备(带有iOS 7的iPhone 4和5)中进行测试时,服务器端脚本不会收到任何内容(尽管使用的方法与Android中完全相同)...
我已经阅读了有关Safari缓存和#34; 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
都无法抓住任何内容......我认为,我的应用不是& #39;实际上发送任何东西。但是,由于完全相同的代码适用于Android设备,因此我不知道自己可能做错了什么...
任何人都知道会发生什么,我该如何解决?
提前感谢您的时间和精力! :)
答案 0 :(得分:0)
如果您使用的是Canvas +,请尝试从Canvas +环境中进行POST,如果它不起作用,请在WebView中尝试。其中一个应该实际工作:)