0

Javascript、AJAX、および「POST」情報をサーバーに送信する際に奇妙な問題が発生しています... iOS と Android の両方で実行されるHTML5 / Javascript (プレーン JS、jQuery なし!) ゲームで作業しています。繭JSPOST メソッド(GET ではなく)を使用してサーバー スクリプトに渡す必要があるものがあります。Androidデバイス (Nexus 5) でテストするときは完全に機能しますが、iOS デバイス(iOS 7 を搭載した iPhone 4 および 5 ) でテストするときは完全に機能します。 )、サーバー側のスクリプトは何も受け取りません(ただし、使用される方法は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、 もも も 何POSTGLOBALSキャッチしません... したがって、私のアプリは実際には何も送信していないと思います。ただし、まったく同じコードが Android デバイスでも機能するため、何が間違っているのかわかりません...

何が起こっているのか、どうすれば解決できるのか誰でも知っていますか?

あなたの時間と労力を前もって感謝します! :)

4

1 に答える 1

0

Canvas+ を使用している場合、Canvas+ 環境から POST を実行してみて、うまくいかない場合は WebView で試してください。両方のいずれかが実際に機能するはずです:)

于 2014-11-04T13:26:57.517 に答える