在javascript .send函数中传递数组

时间:2013-12-11 20:38:24

标签: javascript php arrays json

这是关于将数组传递给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...";
}

1 个答案:

答案 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将使用字符串类型。