2017-05-26 67 views
0

PARAM我有了類似於以下的結構數組:發送對象的JavaScript XHR

var data = [ 
    { 
     'name': 'Foo' 
    }, 
    { 
     'name': 'Bar' 
    } 
] 

我想將它傳遞給我的純JavaScript的PHP腳本,而不依賴於jQuery的。

所以我的jQuery的版本是:

$.ajax({ 
    'url': '/script.php', 
    'method': 'POST', 
    'data': {'inscriptions': data}, 
    'dataType': 'json', 
    'success': function(response){ 
     // my code for handling the response 
    } 
}); 

而且在Javascript中我有以下幾點:

var xhr = new XMLHttpRequest(); 
xhr.open('POST', '/script.php', true); 
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
xhr.send(data); 
xhr.onreadystatechange = function(event){ 

    if(event.target.readyState != XMLHttpRequest.DONE) 
     return; 

    // my code for handling the response 

}; 

但是我遇到的問題是,它發送在Javascript這樣,我因爲

array(0){} 

如果我改變它t ○:

xhr.send(JSON.stringify({'inscriptions': data})); 

然後在我的服務器端我$_POST將是:

array (size=1) 
    '{"inscriptions":' => 
     array (size=1) 
      '{"name":"Foo"},{"name":"Bar"}' => string '' (length=0) 

當我通過jQuery發送我得到如下:

array (size=1) 
    'inscriptions' => 
    array (size=2) 
     0 => 
     array (size=1) 
      'name' => string 'Foo' (length=3) 
     1 => 
     array (size=1) 
      'name' => string 'Bar' (length=3) 

有沒有辦法實現純Javascript的同一件事情?

我的問題已被標記爲Send JSON data from Javascript to PHP?的副本,但答案並不回答我的問題。他們使用了一種「旁路」它:

php://input 

但是,它不是直接將其發送到$_POST像jQuery一樣。

+0

的可能的複製[發送從Javascript JSON數據到PHP?](https://stackoverflow.com/questions/8599595/send-json-data-from-javascript-to-php) – JazZ

回答

-1
xhr.setRequestHeader("Content-type", "application/json") 
xhr.send(JSON.stringify({'inscriptions': data})); 
+0

我已經已經試過了,'$ _POST'仍然是空的。 –