Javascript 如何判断是否已提交HTTP表单?
让我们使用一个简单的小请愿表,它旨在天真地收集数十亿个密码:Javascript 如何判断是否已提交HTTP表单?,javascript,jquery,html,angularjs,forms,Javascript,Jquery,Html,Angularjs,Forms,让我们使用一个简单的小请愿表,它旨在天真地收集数十亿个密码: <form action="/Petition/Sign" method="post"> <input class="form-control password" id="Password" name="Password" type="password"> <button type="submit" class="btn loginBtn">Sign</button> &
<form action="/Petition/Sign" method="post">
<input class="form-control password" id="Password" name="Password" type="password">
<button type="submit" class="btn loginBtn">Sign</button>
</form>
签名
无论出于何种原因,当一篇成功的帖子出现时,我希望在这个视图中用JavaScript代码(尽可能地)通知我,最明显的是被点击的“符号”按钮,但这甚至只是我想要捕捉的事件的开始
我能想到的最简单的方法是在按钮的ngClick
事件上创建并清除一个隐藏的输入,然后轮询一个固定的超时,直到该输入的值是一个常量,并且总是从POST
请求返回
注意:这是一个很小的例子,展示了一大群这样的表单,然后将它们全部转换为使用带有信号完成的Ajax调用,这仅仅是在可行的非常遥远的一方,而且离理想的更遥远。与我提出的其他此类问题不同,我没有兴趣直接衡量通话的成功与否。用纯javascript的方式-
var ele = [Your Form Element];
if(ele.addEventListener){
ele.addEventListener("submit", callback, false); //Modern browsers
}else if(ele.attachEvent){
ele.attachEvent('onsubmit', callback); //Old IE
}
在jquery中-
$(element).submit(function(){
console.log('submitted);
});
而在AngularJs中-
为此目的,有ng提交指令
请在此阅读-首先,没有“Angular-esque”表单POST-表单POST是一个完整的页面事件,“end”结果是一个HTTP响应,浏览器捕获该响应以呈现新页面。如果您正在执行Ajax POST(例如,在Angular中使用
$http.POST
),则.then
/.catch
处理程序就是完成处理程序。除此之外,我恐怕不明白你的问题,我想我们需要定义“一个成功的帖子”的含义。如果这意味着表单将数据返回到操作地址,那么我不知道如何在客户端完成这项工作。为什么不让服务器告诉你呢?所有这些的问题是它们在文章的开头就发出了。我想让我的观点知道这篇文章何时完成,或者最坏的情况是何时中止。似乎唯一的解决方案是等待隐藏值与表单数据一起返回。似乎没有办法在非Ajax文章中实现我想要的内容,因此您得到了一个好方法的要点。
<form ng-submit="callback()">
$scope.callback = function(){ /*...*/ };