为什么我的JS代码在明显的循环中运行?

时间:2011-09-16 00:30:07

标签: php javascript jquery html ajax

我有以下代码:

JS

<script type="text/javascript">
$(function(){      
  $('#fgotpwfield').hide();        

  $('#login_submit').click(function() {
    $('#form_result').fadeOut('fast');
    $('#myccrxlogin input').removeAttr('disabled');
    $('#myccrxlogin').submit();
  });

  if ($("#myccrxlogin").length > 0) {
    $("#myccrxlogin").validate({
        rules: {
            email: { required: true, email: true },
            password: 'required'
        },
        messages: {
            email: { required: 'Your email address is required.',
            email: 'Please enter a valid email address.'},
            password: 'Your password is required.'
        },
        submitHandler: function(form) {
            $('#myccrxlogin input').attr('disabled','true');
            $('#login_submit').fadeOut('fast');
            $('#forgotpw').fadeOut('fast');
            $('body').append('<div id="page_load"></div>');

            var email = $("#email").val();
            var pw = $("#password").val();
            var data = 'email=' + email + '&password=' + pw;

            $.ajax({
                url: "hidden url",
                type: "POST",
                data: data,
                cache: false,
                success: function (html) {
                    $('#page_load').remove();

                    if(html == 'OK') {
                        alert(html);
                    } else {
                        //$("#password").val('');
                        $("#form_result").html(html);
                        $('#form_result').fadeIn('slow');
                        $('#myccrxlogin input').removeAttr('disabled');
                        $('#login_submit').fadeIn('slow');
                        $('#forgotpw').fadeIn('slow');
                    }
                }
            });
        } /*close submit handler */
    });
  };
});
</script>

HTML

<div id="form_result" style="margin:10px; display:none;" class="field-submit-error"></div><div style="clear:both;"></div>
        <div id="loginformfield">
        <p style="font-size:24px; font-weight:bold; font-family:Arial, Helvetica, sans-serif; color:#f93;">Login</p>
        <form class="loginform" id="myccrxlogin" method="post" target="_parent">            
                <p>
                <input name="email" type="text"  id="email" tabindex="1" />
                <label for="email">E-mail</label></p>

                <p><input name="password" type="password" class="text large required" id="password" tabindex="2" />
                <label for="password">Password</label></p>

                <div class="loading"></div>
                <p><a href="#" id="forgotpw">I forgot my password</a></p>
                <p><a class="readmore" href="#" id="login_submit" style="margin-bottom:0.5em;" tabindex="3">Login!</a></p>
        </form>
        </div>

一个人输入他们的电子邮件和密码,首先验证该文件,然后成功通过ajax调用。 ajax PHP页面echo是错误或'OK'。我知道代码变为'OK',因为警报(html)被触发但它无限运行。不确定为什么?

更新

我相信我可能会遇到此处所述的递归问题:http://docs.jquery.com/Plugins/Validation#General_Guidelines虽然我不确定是否适用。

3 个答案:

答案 0 :(得分:1)

我无法介入,但我相信您需要让submithandler返回false。

我相信表单是由表单操作和ajax提交提交的。

答案 1 :(得分:0)

查看您发布的递归链接,您需要更改此行:

$('#myccrxlogin').submit();

以便提交原始表单,而不是表单的jquery-ized版本。在他们的例子中,

$(form).submit();

变为

form.submit();

尝试以类似的方式更改提交行。

答案 2 :(得分:0)

令人惊讶的不明确和疯狂的答案是:我必须将以下内容添加到我的ajaxed-PHP页面中。关于在本地运行或使用我的设置运行的东西是古怪的。希望这有助于某人。

添加到ajax php页面的第一行:

header('Access-Control-Allow-Origin: *');