我想通過使用post
方法和FormData
對象通過ajax提交表單。XMLHttpRequest&FormData不提交數據
這裏是JavaScript的簡化版本:
var form=…; // form element
var url=…; // action
form['update'].onclick=function(event) { // button name="update"
var xhr=new XMLHttpRequest();
xhr.open('post',url,true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var formData=new FormData(form);
formData.append('update', true); // makes no difference
xhr.send(formData);
xhr.onload=function() {
alert(this.response);
};
};
的形式具有:
- 的按鈕(
type="button" name="update"
)運行該腳本 - 沒有
action
和method="get"
我的PHP腳本具有以下內容:
if(isset($_POST['update'])) {
print_r($_POST);
exit;
}
// more stuff
print 'other stuff';
當我嘗試它,PHP的秋天通過對代碼的其餘部分,我也得到了其他輸出,而不是我從print_r
聲明期望。
我曾嘗試以下變化:
new FormData()
(無形式)。這確實工作,如果我手動添加update
數據。new FormData(form)
。這是行不通的,無論我手動添加update
。- 將表單方法更改爲
post
。 - Firefox,Safari & MacOS上的Chrome;所有當前版本。
的從本身看起來是這樣的:
<form id="edit" method="post" action="">
<p><label for="edit-summary">Summary</label><input id="edit-summary" name="summary" type="text"></p>
<p><label for="edit-description">Description</label><input id="edit-description" name="description" type="text"></p>
<p><label for="edit-ref">Reference</label><input id="edit-ref" name="ref" type="text"></p>
<p><label for="edit-location">Location</label><input id="edit-location" name="location" type="text"></p>
<p><button type="button" name="update">OK</button></p>
</form>
我應該怎麼辦提交得到這個工作?
請不要jQuery。
你的表單HTML是什麼樣的? –
@ E.Sundin請參閱編輯版本的問題... – Manngo