2013-12-11 2 views
0

이것은 PHP 페이지에 배열을 전달하는 것에 관한 것입니다.이 (아래 코드)와 같은 배열을 보낼 수 있습니까? 불가능하다면 내 코드에 어떤 변화를 가져야합니까?자바 스크립트에서 전달 배열 .send 함수

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

.send()은 자바 스크립트 배열을 사용하지 않습니다. 보낼 수있는 데이터 형식은 다양하며 어떤 형식이 적절한 지 결정해야하지만 배열은 그 중 하나가 아닙니다. 가장 간단한 방법은 배열을 JSON 문자열로 변환하여 전송하는 것입니다.

var cards = [ 
    "hearts", 
    "spades" 
]; 

hr.send(JSON.stringify(cards)); 

그런 다음 수신하는 쪽에서 JSON을 구문 분석하여 서버 쪽에서 사용중인 모든 언어 형식으로 다시 구문 분석합니다. PHP라면 PHP 함수를 사용하여 서버의 PHP 배열에 데이터를 넣을 JSON을 구문 분석 할 수 있습니다. 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 문자열 유형을 사용하는 것입니다 사용.

관련 문제