Итак, у меня есть вызов 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-скрипт, но любая помощь с этим была бы ВЕЛИКОЙ оценкой.
попробуйте: данные: {'classID': inviteID}, – Julo0sS
Проверьте сетевую консоль IE для ответа, который он возвращает из сценария php. – James
Добавление котировок в classID не помогло. Это то, что я вернусь из сценария: Success: {«error»: «missing required data [inviteID]», «code»: 400} –