jquery,AJAX表单提交不起作用。页面崩溃

时间:2012-03-16 17:41:32

标签: jquery ajax forms

我正在尝试获取提交表单而不重新加载页面。

这是脚本:

$(function() {
    $("#submit").click(function() {
        var email = document.getElementById('emailaddress');
        var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        if (!filter.test(email.value)) {
            $('#invalidmail').show();
            var t=setTimeout(function(){$('#invalidmail').fadeOut("slow");},2000);
            email.focus;
            return false;
        } else {    
            $.ajax({
                type: "POST",
                url: "traces_form_handler.cgi",
                data: email,
                success: function(){
                    alert("success!");
                }
            });
            alert("success!");
            return false;
        };

      });  
});
</script>

这是html

<form name="form" method="post">
    Email: <input type="text" name="email" id="emailaddress" />
    <input type="submit" value="Submit" id="submit"/>
    </form>        
   <p id="invalidmail">Ops! The address you provided is not valid. Please retry.</p>

直到无效邮件部分有效,但如果我提交了有效的电子邮件地址,则浏览器会崩溃。

有什么建议吗?

由于

3 个答案:

答案 0 :(得分:2)

我不知道这是否会导致浏览器崩溃。但是你要将dom元素作为数据发送到ajax请求,我想你只想发送它的值。

        $.ajax({
            type: "POST",
            url: "traces_form_handler.cgi",
            data: { email: email.value },//Check here in your code
            success: function(){
                alert("success!");
            }
        });

答案 1 :(得分:0)

此属性导致问题

url: "traces_form_handler.cgi",

我在浏览器FF 10.0.2上测试了它。

错误控制台错误是: 错误:未捕获异常:[异常...“无法转换JavaScript参数”nsresult:“0x80570009(NS_ERROR_XPC_BAD_CONVERT_JS):: line 7601”data:no]

Solution: url:"some_valid_url_.php"

答案 2 :(得分:0)

您可以使用表单提交事件,它更好

<强> HTML

<form id="myForm" name="form" method="post">
  Email: <input type="text" name="email" id="emailaddress" />
  <input type="submit" value="Submit" id="submit"/>
</form> 
<p id="invalidmail">Ops! The address you provided is not valid. Please retry.</p>

<强> JS

$(function() {
​$("#myForm").on('submit', function(e){
e.preventDefault();
var email=$("#emailaddress");
var filter = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/;
    if (!filter.test(email.value)) {
        $('#invalidmail').show();
        var t=setTimeout(function(){
            $('#invalidmail').fadeOut("slow");},2000);
        email.focus;
        return false;
    }
    else 
    {    
        $.ajax({
            type: "POST",
            url: "my_server-page.php",
            data: email.val(),
            success: function(data){
                alert("success!");
            }
        });
    }

});​​
});