2014-09-10 31 views
0

所以我有一個AJAX調用,我正在使用POST 1變量到一個PHP腳本我有一個單獨的服務器上。 PHP接受這個變量並根據變量返回數據。這適用於除IE9及以下的所有瀏覽器。 IE9返回數據,但它是一個錯誤,說這個變量是缺少的,這表明它沒有發送數據。下面我有AJAX調用我做:AJAX沒有在IE中發佈數據到PHP

(function (jQ) { 

var inviteID = '00000000000'; 

jQ.ajax({ 
    url: 'www.example.com/test.php', 
    type: 'POST', 
    dataType: 'json', 
    cache: false, 
    data: { classID: inviteID }, 
    error: function (data, status, error) { 
     jQ('.statusField').append('Failure: ' + data + status + error); 
    }, 
    success: function (data, status, error) { 
     jQ('.statusField').append('Success: ' + data); 
    } 
}); 
})(jQuery); 

而且低於我的影片所使用的PHP腳本:

<?php 
//first POST to grab token 
function runPost($classID) { 

$postdata = array(
    'username' => 'username', 
    'password' => 'password' 
); 
//open connection 
$ch = curl_init(); 

//set the url, POST data 
curl_setopt($ch, CURLOPT_URL, "https://www.example.com/login"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postdata)); 
curl_setopt($ch, CURLOPT_USERAGENT, 'example'); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

//execute post 
$result = curl_exec($ch); 

//close connection 
curl_close($ch); 

list($message, $time, $token, $userID) = split(',', $result); 
list($one, $two, $three, $four, $five) = split('\"', $token); 
$four = json_encode($four); 
$four = str_replace('"','',$four); 


$secondaryPostData = array(
    'token' => $four, 
    'data' => array('invitationID' => $classID 
)); 

//open connection 
$chu = curl_init(); 

//set the url, POST data 
curl_setopt($chu, CURLOPT_URL, "https://www.example.com/classID"); 
curl_setopt($chu, CURLOPT_POST, 1); 
curl_setopt($chu, CURLOPT_POSTFIELDS, json_encode($secondaryPostData)); 
curl_setopt($chu, CURLOPT_USERAGENT, 'example'); 
curl_setopt($chu, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
curl_setopt($chu, CURLOPT_RETURNTRANSFER, 1); 

//execute post 

$secondResult = curl_exec($chu); 

//close connection 
curl_close($chu); 
return json_encode($secondResult); 
} 
//Grab classID from javascript 
echo runPost(trim($_POST['classID'])); 
?> 

再次,這工作正常一切,除了IE瀏覽器。我嘗試了幾種不同的方法,但是所有的東西都給了我同樣的錯誤IE中的網絡控制檯顯示請求主體確實具有classID,但我猜測它只是沒有將數據發送到PHP腳本。我不知道我是否錯過了IE需要將這些內容發送到PHP腳本的東西,但是對此有任何幫助都會非常感謝。

+0

嘗試使用:data:{'classID':inviteID}, – Julo0sS 2014-09-10 18:33:06

+0

檢查IE網絡控制檯是否從PHP腳本獲取響應。 – James 2014-09-10 18:39:02

+0

圍繞classID添加引號不起作用。這是我從腳本中得到的結果:成功:{「error」:「缺少必需的數據[invitationID]」,「代碼」:400} – 2014-09-10 18:42:51

回答

0

您是否嘗試過使用它?

$("button").click(function(){ 
    $.post("demo_test.php",function(data,status){ 
    alert("Data: " + data + "\nStatus: " + status); 
    }); 
}); 

適合我在鉻和IE。

$.post()$.ajax(); 手短方法,它確實每次你可以在$.ajax();做的時候,我開始有這個問題我從來沒有使用過$.ajax();除非我不得不派出FORMDATA整個對象了所有的現場輸入的形式

+0

我試圖使用.post並得到相同的響應。該腳本正在給我正確的響應,以避免它發生的錯誤,但是它會得到錯誤,因爲IE不會將實際數據發佈到腳本中。 – 2014-09-10 19:21:29