[英]Ajax “POST” not working in iOS
我在使用Javascript,AJAX時遇到了一個奇怪的問題,並將“ POST”信息發送到服務器...我正在使用HTML5 / Javascript (純JS, 沒有jQuery !)游戲,該游戲同時通過iOS和Android運行CocoonJS 。 我需要使用POST方法 (而不是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
, POST
或GLOBALS
都不會捕獲任何東西...那么,我認為我的應用程序實際上沒有發送任何東西。 但是,由於相同的代碼可以在Android設備上運行,所以我不知道自己做錯了什么...
誰知道會發生什么,我該如何解決?
在此先感謝您的時間和精力! :)
如果您使用的是Canvas +,請嘗試從Canvas +環境進行POST(如果它不起作用),請在WebView中進行嘗試。 兩者之一實際上應該工作:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.