用ajax而不是动作提交表单

时间:2012-08-06 03:14:02

标签: javascript ajax jquery

只是尝试使用ajax而不是动作来提交表单,但仍然没有运气。 PHP脚本工作,并一直在测试通过动作提交。

到目前为止,我看过例子,阅读文档,询问SO问题,但我仍然没有答案。我需要帮助,我原本打算两周前测试这个用例。

当我提交页面时看起来它刷新但没有任何反应。用户帐户未插入数据库,并且不显示警告框。 任何人都可以看到出了什么问题吗?

javascript看起来像这样:

    $(document).ready(function()
{

$.validator.addMethod("uniqueuser", function(username){
    var response
    $.ajax({
        type: "POST",
        url: "check_username.php",
        data: "username=" + username,
        success: function(server_response){


                if(server_response == '0'){

                    response = true;
                }
                else if(server_response == '1'){

                    response = false;
                }

        }
    });
    return response;
}, "Username is not available");



$("#createaccount).validate({
    debug: false,
    rules:{
        fname:{
            required: true
        }
        surname:{
            required: true
        }
        email:{
            email:true,
            required: true
        }
        location:{
            required:true
        }
        username:{
            minlength: 6,
            required:true,
            uniqueuser:true
        }
        password:{
            required:true,
            minlength: 6
        }
        re_password:{
            required:true,
            equalTo: "#password"
        }
    }


    submitHandler: function(form){
        $.ajax({
            type: 'POST',
            url: 'createaccount2.php',
            data: $("#createaccount").serialize(),
            success: function(response){

                if(response == "1"){
                    alert("That username is already taken!");
                }
                else if(response == "2"){
                    alert("An account is already registered to that email address");
                }
                else if(response == "3"){
                    alert("Your account has been created!");
                }
                else if(response == "4"){
                    alert("Something went wrong, your account could not be created");
                }
            }

        });


    });
});
});

有关验证码的信息:http://docs.jquery.com/Plugins/Validation

3 个答案:

答案 0 :(得分:1)

脚本中存在许多问题。所有这些都与您正在使用的验证器插件明显相关。一个是ASYNCHRONOUS CALLs。

当你使用$.validator时(我不知道这个插件,你可以添加引用吗?)你试着设置ASYNC的return response;。 (在AJAX获得服务器响应之后)。这就是AJAX具有回调函数的原因,因为你不知道什么时候会被设置。

发生了什么?在AJAX get完成之前执行return并修改变量(但范围很好)。

修复?您需要深入了解该验证器插件,看看它是否支持异步验证。

否则,您需要设置自己的脚本验证。

答案 1 :(得分:0)

您如何将表格提交与表格相关联?你需要在Form onSubmit事件中做些什么吗?或使用Submit事件处理程序?

<form id="target" action="destination.html">

就像这样

$('#target').submit(function() {
  alert('Handler for .submit() called.');
  return false;
});

更多信息:http://api.jquery.com/submit/

答案 2 :(得分:0)

    <form id="target" onSubmit="return false;">