XMLHttpRequest - 通过_POST

时间:2017-10-16 15:43:44

标签: arrays post xmlhttprequest

使用旧的$ .ajax方法,我会像这样发送数组和普通数据:

var dataARR = {
    byteValue: 1,
    data: []
};

注意data是一个数组。

dataARR.data.push({Username: "wazo", Info: "wazoinfo"});
dataARR.data.push({Username: "bifo", Info: "bifoinfo"});

然后准备好并发送:

var dataJSON = JSON.stringify(dataARR);
$.ajax({
    type: "POST", // This for array
    url: "login.php",
    cache: false,
    data: { myJson: dataJSON },
    success: function (data) {
        // Do stuff here
    }
});

在php代码中,我会执行以下操作:

$dataTotal = json_decode($post['myJson'], true);
$Username0 = $dataTotal['data'][0]['Username'];
$Info0 = $dataTotal['data'][0]['Info']);
$Username1 = $dataTotal['data'][1]['Username'];
$Info1 = $dataTotal['data'][1]['Info']);

一切运作良好。

但是,现在我要更改为XMLHttpRequest:

var url = "login.php";
var method = "POST";
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
    // XHR for Chrome/Firefox/Opera/Safari.
    xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
    // XDomainRequest for IE.
    xhr = new XDomainRequest();
    xhr.open(method, url);
} else {
    // CORS not supported.
    xhr = null;
}

if (!xhr) {
    return;
}
// Response handlers.
xhr.onload = function (data) {
    // Do stuff
};

重要的一点

var dataJSON = JSON.stringify(dataARR);
xhr.send({ myJson: dataJSON });

但现在$_POST['myJson']不存在

当我执行echo print_r($_POST);时,它会返回Array()1

问题:我需要在xhr.send(????);发送什么才能获取它以便我可以再次在php中读取数组?

1 个答案:

答案 0 :(得分:0)

您可以使用XMLHttpRequest以不同方式访问数据。

在javascript中:

var dataJSON = JSON.stringify(dataARR);
xhr.send(dataJSON);

在php中:

$dataTotal = json_decode(file_get_contents( "php://input" ), true);
$Username0 = $dataTotal['data'][0]['Username'];
$Info0 = $dataTotal['data'][0]['Info']);
$Username1 = $dataTotal['data'][1]['Username'];
$Info1 = $dataTotal['data'][1]['Info']);