当从jqueryajax调用输入表单时,它不起作用

input form does not work when call it from jquery ajax

本文关键字:不起作用 表单 jqueryajax 调用 输入 当从      更新时间:2023-09-26

对不起,如果我问了一个荒谬的问题,我对ajax和jQuery完全是新手。

基本上,我的表格如下;

<form id="login_form" >
<input type="text" id="inputEmail" name="username">
<input type="password" id="inputPassword" name="password">
<div id="MyDynamicDiv"></div>
<button id="signin" name="signin" type="submit">button</button>
</form>
<script>
$("#login_form").submit(function() {
             if ($("#login_form").valid()) {
                    $('.messagebox').slideUp('slow');
                    var data1 = $('#login_form').serialize();
                            $("button").button('loading');
                    $.ajax({
                        type: "POST",
                        url: "login/login.php",
                        data: data1,
                           dataType: 'json',
                        success: function(msg) {
if (msg.result == 12) {
$('#MyDynamicDiv').load('captcha.php');
}
if (msg.result == 1) {    
      $('.messagebox').addClass("success-message");
         $('.message').slideDown('slow');
            $('#alert-message').text("....");
                $('#login_form').fadeOut(5000);
                     window.location = "members.php"
                  } else { return false;}
</script>

我的captcha.php是

<input type="text" name="captcha_code">
<img id="captcha" src="/test/securimage/securimage_show.php">
<a href="#" id="captcha_link" onclick="document.getElementById('captcha').src = '/test/securimage/securimage_show.php?' + Math.random(); return false">[ Different Image]</a>

login/login.php还包括

echo json_encode( array('result'=>12));

我可以调用captcha.php并显示在页面上,但是,表单不适用于captcha输入。如果我用不同的方式来称呼它,我在任何地方都找不到我应该做什么。

编辑:captchacode的输入值似乎没有正确发送/发布。如果我使用嵌入到登录表单中的captcha.php代码,那么它就可以工作了。提前感谢,

您的captcha输入似乎在<form>元素之外,因此当您serialize()表单时,它不会包含在POST数据中。将输入移动到表单元素内部。

你似乎漏掉了一些右括号和大括号。

由于异步性质,从success函数执行return false不会有任何作用。相反,您应该从提交事件中返回false,或者防止默认值。

更正了带有注释更改的代码(假设您已经移动了captcha输入):

$("#login_form").submit(function (e) { // capture event
    e.preventDefault(); // always prevent the form from submitting
    if ($("#login_form").valid()) {
        $('.messagebox').slideUp('slow');
        var data1 = $('#login_form').serialize();
        $("button").button('loading');
        $.ajax({
            type: "POST",
            url: "login/login.php",
            data: data1,
            dataType: 'json',
            success: function (msg) {
                if (msg.result == 12) {
                    $('#MyDynamicDiv').load('captcha.php');
                }
                if (msg.result == 1) {
                    $('.messagebox').addClass("success-message");
                    $('.message').slideDown('slow');
                    $('#alert-message').text("....");
                    $('#login_form').fadeOut(5000);
                    window.location = "members.php"
                }
            } // was missing
        }); // was missing
    } // was missing
}); // was missing

对于未来的调试,请记住检查控制台(F12)是否有错误,并缩进代码,因为这会使缺少大括号的情况更加明显。您可以使用JSFiddle的TidyUp功能来自动缩进它。