这是关于将数组传递给php页面。是否可以发送这样的数组(下面的代码)?如果不可能,我应该对我的代码做些什么改变?
function ajax_post(){
var hr = new XMLHttpRequest();
hr.open("POST", "get_numbers.php", true);
hr.setRequestHeader("Content-type", "application/json");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var data = JSON.parse(hr.responseText);
var results=document.getElementById("ace");
//results.innerHTML=data.u1.port;
for (var obj in data)
{
results.innerHTML+=data[obj].port;
}
}
}
var cards= new Array();
cards[0]="hearts";
cards[1]="spades";
hr.send(cards);
results.innerHTML = "processing...";
}
答案 0 :(得分:1)
.send()
不接受javascript数组。您可以发送多种形式的数据,您必须决定哪种形式是合适的,但数组不是其中之一。最简单的方法是将数组转换为JSON字符串并发送。
var cards = [
"hearts",
"spades"
];
hr.send(JSON.stringify(cards));
然后,在接收端,你会将JSON解析回你在服务器端使用的任何语言形式。如果它是PHP,那么您可以使用PHP函数来解析JSON,它将数据放入服务器上的PHP数组中。
根据XMLHttpRequest对象的MDN doc page,.send()
可以采用以下类型的数据:
void send();
void send(ArrayBufferView data);
void send(Blob data);
void send(Document data);
void send(DOMString? data);
void send(FormData data);
使用JSON将使用字符串类型。