2014-09-10 4 views
0

Итак, у меня есть вызов AJAX, который я использую для переменной POST 1 для скрипта PHP, который у меня есть на отдельном сервере. PHP принимает эту переменную и возвращает данные, основанные на том, что такое переменная. Это работает во всех браузерах, кроме IE9 и ниже. IE9 возвращает данные, но это ошибка, указывающая на отсутствие переменной, которая для меня показывает, что она не отправляет данные. Ниже у меня есть вызов AJAX Я делаю:AJAX не отправляет данные на PHP только в IE

(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 показывает, что тело запроса имеет в нем классID, но я предполагаю, что он просто не отправляет данные в PHP-скрипт. Я не знаю, не хватает ли я чего-то, что IE должен отправить на PHP-скрипт, но любая помощь с этим была бы ВЕЛИКОЙ оценкой.

+0

попробуйте: данные: {'classID': inviteID}, – Julo0sS

+0

Проверьте сетевую консоль IE для ответа, который он возвращает из сценария php. – James

+0

Добавление котировок в classID не помогло. Это то, что я вернусь из сценария: Success: {«error»: «missing required data [inviteID]», «code»: 400} –

ответ

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 не будет отправлять фактические данные сценарию. –

Смежные вопросы