[英]Javascript XHR send multipart/form-data
我正在嘗試發送multipart / form-data內容類型請求:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState==4){
alert(xhr.responseText);
}
}
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type","multipart/form-data; boundary=---------------------------275932272513031");
xhr.send('-----------------------------275932272513031 Content-Disposition: form-data; name="name"
test
----------------------------275932272513031--');
然后在php中我只打印$_POST
數組
print_r($_POST);
但我每次都得到一個空數組。 我希望看到
Array (
name => "test"
)
我究竟做錯了什么?
您的代碼失敗,因為您使用了“Enter”而不是轉義的換行符( \\n
)。
JavaScript不支持"first line[Enter]second line"
。 如果您需要帶換行符的字符串,請使用"first line\\nsecond line"
。
一旦解決了這個問題,您的代碼應該按預期工作(有一點需要注意,請參閱最終說明):
var xhr = new XMLHttpRequest();
xhr.onload = function() {
alert(xhr.responseText);
};
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type","multipart/form-data; boundary=---------------------------275932272513031");
xhr.send('-----------------------------275932272513031\n' +
'Content-Disposition: form-data; name="name"\n\n' +
'test\n\n' +
'----------------------------275932272513031--');
注意 :您的代碼僅適用於由UTF-8字符組成的有效負載, 而不是二進制數據。 如果您想了解有關通過XMLHttpRequest提交包含二進制數據的表單的更多信息,請參閱此答案及其鏈接引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.