Ajax" POST"不在iOS中工作

时间:2014-06-19 11:13:03

标签: javascript ios ajax post cocoonjs

我在使用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);

消息完全为空,因此GETPOSTGLOBALS都无法抓住任何内容......我认为,我的应用不是& #39;实际上发送任何东西。但是,由于完全相同的代码适用于Android设备,因此我不知道自己可能做错了什么...

任何人都知道会发生什么,我该如何解决?

提前感谢您的时间和精力! :)

1 个答案:

答案 0 :(得分:0)

如果您使用的是Canvas +,请尝试从Canvas +环境中进行POST,如果它不起作用,请在WebView中尝试。其中一个应该实际工作:)