当前位置:  开发笔记 > 编程语言 > 正文

如何捕获form.submit的响应

如何解决《如何捕获form.submit的响应》经验,为你挑选了7个好方法。

我有以下代码:


.
.
.
Click

我想捕获html响应form1.submit?我该怎么做呢?我可以在form1.submit方法中注册任何回调函数吗?



1> nickf..:

使用普通的javascript,您将无法轻松完成此操作.发布表单时,表单输入将发送到服务器并刷新页面 - 数据在服务器端处理.也就是说,该submit()函数实际上并不返回任何内容,它只是将表单数据发送到服务器.

如果你真的想在Javascript中获得响应(没有刷新页面),那么你需要使用AJAX,当你开始讨论使用AJAX时,你需要使用一个库.jQuery是迄今为止最受欢迎的,也是我个人的最爱.有一个很棒的jQuery插件叫做Form,它可以完全按你想要的那样做.

这是你如何使用jQuery和插件:

$('#myForm')
    .ajaxForm({
        url : 'myscript.php', // or whatever
        dataType : 'json',
        success : function (response) {
            alert("The server says: " + response);
        }
    })
;


公平地说,你不需要使用AJAX库.库是使用javascript编写的,因此存在非库解决方案.那就是说,我100%赞成使用库来抽象制作AJAX调用所涉及的所有荒谬和复杂性.
在这里使用库真的不值得.在纯JS代码不是要复杂得多:`VAR XHR =新的XMLHttpRequest()xhr.open( "POST", "myscript.php"); xhr.onload = function(event){alert("服务器说:"+ event.target.response); }; var formData = new FormData(document.getElementById("myForm")); xhr.send(FORMDATA);`
jQuery表单插件的+1.它真棒,但你的'目标'属性错了.它不像表单的'action'属性; 即它不是提交目的地.来自[docs](http://malsup.com/jquery/form/#options-object):**target - 标识要使用服务器响应更新的页面中的元素.**
我将此评论更多地作为上述解决方案的FYI发布,除非在IE 9及更低版本上通过AJAX进行文件上传.我在非HTML5 IE浏览器(IE 9及更低版本)上通过ajax提交文件时遇到问题,所以我必须使用iframe hack.但是使用iframe hack需要form.submit(),但你不能等待响应告诉你它是否成功.这让我陷入了困境.

2> Ates Goral..:

Ajax的替代方法是将不可见的设置