的XMLHttpRequest - 发送阵列由彦博
问题描述:
在旧$就法,我要送阵列和正常的数据,像这样:的XMLHttpRequest - 发送阵列由彦博
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中的数组?
答
您使用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']);