0

我在使用 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 设备,我不知道我可能做错了什么......

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

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

4

1 回答 1

0

如果您使用的是 Canvas+,请尝试从 Canvas+ 环境发布,如果它不起作用,请在 WebView 中尝试。两者之一应该实际工作:)

于 2014-11-04T13:26:57.517 回答