AJAX不仅仅在IE中向PHP发布数据

时间:2014-09-10 18:23:02

标签: php jquery ajax internet-explorer

所以我有一个AJAX调用,我将其用于POST 1变量到我在单独服务器上的PHP脚本。 PHP接受此变量并根据变量返回数据。这适用于IE9及以下版本的所有浏览器。 IE9返回数据但是错误表示变量丢失了,这对我来说表明它没有发送数据。下面我正在制作AJAX电话:

(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中的网络控制台显示Request主体中确实有classID,但我猜测它不会将数据发送到PHP脚本。我不知道我是否遗漏了IE需要将其发送到PHP脚本的内容,但是对此的任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用此功能?

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

在chrome和IE中为我工作。

$.post()$.ajax();的简写方法 当我开始遇到这个问题时,它会在$.ajax();中完成你可以做的每件事我从未使用过$.ajax();,除非我必须将FormData中的所有字段输入的整个对象发送给