4 回答

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
這個(gè)例子設(shè)計(jì)得很糟糕并且令人困惑。
formSubmit
僅當(dāng)單擊按鈕時(shí)才會(huì)調(diào)用該函數(shù)。單擊按鈕時(shí),該函數(shù)將運(yùn)行,并且不會(huì)發(fā)生其他任何事情;由于輸入不是提交按鈕,因此表單不會(huì)嘗試提交。所有網(wǎng)絡(luò)活動(dòng)都將由jQuery.ajax
函數(shù)內(nèi)部產(chǎn)生。在這種情況下, the<form>
和 themethod="post"
會(huì)被完全忽略,因?yàn)楸韱尾粫?huì)被提交 - 使用的方法將是函數(shù)中的方法.ajax
,即 PUT。
但是,如果用戶在聚焦于<input type="text"
. 如果他們這樣做,那么該formSubmit
函數(shù)將不會(huì)被調(diào)用(因?yàn)槲磫螕舭粹o),并且用戶的瀏覽器將在當(dāng)前頁面上將name
和 作為message
表單數(shù)據(jù)發(fā)送到服務(wù)器 - 是的,作為 POST。(這段代碼是在當(dāng)前頁面嗎submit.php
?如果不是,那可能是一個(gè)錯(cuò)誤。也許編寫代碼的人完全忽略了不使用按鈕即可提交表單的可能性。)
為了使示例不那么混亂,我將按鈕更改為提交按鈕,并向表單添加提交處理程序,而不是向按鈕添加單擊偵聽器。然后使用提交處理程序return false
或調(diào)用,e.preventDefault
以便所有網(wǎng)絡(luò)活動(dòng)都通過該.ajax
調(diào)用。

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊
HTML 表單中的屬性method
用于在不借助 Ajax 請(qǐng)求或任何其他腳本語言的情況下發(fā)送表單數(shù)據(jù)時(shí)發(fā)送表單數(shù)據(jù)。
當(dāng)您使用 JS 和 Jquery 等腳本語言時(shí),您有機(jī)會(huì)通過 AJAX 請(qǐng)求發(fā)送數(shù)據(jù)。在 AJAX 請(qǐng)求中,您可以再次定義該方法。因此,它不會(huì)依賴于 HTML 表單的method
屬性。
您可以關(guān)注的資源很少:

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
實(shí)際上,當(dāng)您不使用任何 ajax 請(qǐng)求時(shí),標(biāo)簽很有用method
。action
??假設(shè)你沒有使用該ajax
請(qǐng)求那么會(huì)發(fā)生什么?
由于您
method
是POST
它會(huì)將表單數(shù)據(jù)附加到 HTTP 請(qǐng)求的正文中。然后表單數(shù)據(jù)被發(fā)送到
action
屬性中指定的頁面。
但由于您現(xiàn)在通過 手動(dòng)控制表單提交ajax
。您可以跳過這些attributes
。在這種情況下,您可以在您的formSubmit
方法中指定提交完成后要執(zhí)行的操作。
您還可以form
使用 來阻止提交preventDefault
。例如:
<form onSubmit="formSubmit(event);">
<button>submit</button>
</form>
function formSubmit(e) {
e.preventDefault();
// Now you can set where to go when your form is submitted successfully.
}

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
form 標(biāo)簽通過提供幾個(gè)內(nèi)置的默認(rèn)操作來提供支持,但由于您已經(jīng)定義了一個(gè)提交按鈕并創(chuàng)建了一個(gè)要手動(dòng)執(zhí)行 onclick 的函數(shù),因此 form 標(biāo)簽只會(huì)混淆結(jié)構(gòu)。因此,最好完全刪除表單標(biāo)簽,您的代碼將如下所示
<input type="text" name="name" id="name" >
<textarea name="text" id="message" placeholder="Write something to us"> </textarea>
<input type="button" onclick="return formSubmit();" value="Send">
<script>
function formSubmit(){
var name = document.getElementById("name").value;
var message = document.getElementById("message").value;
var dataString = 'name='+ name + '&message=' + message;
jQuery.ajax({
url: "submit.php",
data: dataString,
type: "PUT",
success: function(data){
$("#myForm").html(data);
},
error: function (){}
});
return true;
}
</script>
添加回答
舉報(bào)