的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']);