4 回答
TA贡献1835条经验 获得超7个赞
这个例子设计得很糟糕并且令人困惑。
formSubmit
仅当单击按钮时才会调用该函数。单击按钮时,该函数将运行,并且不会发生其他任何事情;由于输入不是提交按钮,因此表单不会尝试提交。所有网络活动都将由jQuery.ajax
函数内部产生。在这种情况下, the<form>
和 themethod="post"
会被完全忽略,因为表单不会被提交 - 使用的方法将是函数中的方法.ajax
,即 PUT。
但是,如果用户在聚焦于<input type="text"
. 如果他们这样做,那么该formSubmit
函数将不会被调用(因为未单击按钮),并且用户的浏览器将在当前页面上将name
和 作为message
表单数据发送到服务器 - 是的,作为 POST。(这段代码是在当前页面吗submit.php
?如果不是,那可能是一个错误。也许编写代码的人完全忽略了不使用按钮即可提交表单的可能性。)
为了使示例不那么混乱,我将按钮更改为提交按钮,并向表单添加提交处理程序,而不是向按钮添加单击侦听器。然后使用提交处理程序return false
或调用,e.preventDefault
以便所有网络活动都通过该.ajax
调用。
TA贡献1808条经验 获得超4个赞
HTML 表单中的属性method
用于在不借助 Ajax 请求或任何其他脚本语言的情况下发送表单数据时发送表单数据。
当您使用 JS 和 Jquery 等脚本语言时,您有机会通过 AJAX 请求发送数据。在 AJAX 请求中,您可以再次定义该方法。因此,它不会依赖于 HTML 表单的method
属性。
您可以关注的资源很少:
TA贡献1817条经验 获得超6个赞
实际上,当您不使用任何 ajax 请求时,标签很有用method
。action
➡️假设你没有使用该ajax
请求那么会发生什么?
由于您
method
是POST
它会将表单数据附加到 HTTP 请求的正文中。然后表单数据被发送到
action
属性中指定的页面。
但由于您现在通过 手动控制表单提交ajax
。您可以跳过这些attributes
。在这种情况下,您可以在您的formSubmit
方法中指定提交完成后要执行的操作。
您还可以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贡献1936条经验 获得超6个赞
form 标签通过提供几个内置的默认操作来提供支持,但由于您已经定义了一个提交按钮并创建了一个要手动执行 onclick 的函数,因此 form 标签只会混淆结构。因此,最好完全删除表单标签,您的代码将如下所示
<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>
添加回答
举报