Ajax "POST" не работает в iOS

У меня странная проблема с Javascript, AJAX и отправкой на сервер информации "POST"... Я работаю в игре HTML5 / Javascript (обычный JS, без jQuery!), Которая запускается как на iOS, так и на Android через CocoonJS. Мне нужно передать некоторые вещи в сценарий сервера, используя метод 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, я не знаю, что я могу делать неправильно...

Кто-нибудь знает, что может происходить и как я могу это решить?

Заранее спасибо за ваше время и усилия!:)

1 ответ

Если вы используете Canvas+, попробуйте выполнить POST из среды Canvas+, если она не работает, попробуйте в WebView. Один из обоих на самом деле должен работать:)

Другие вопросы по тегам