2015-03-02 28 views
0

对不起,但我是完全新手的AJAX和jQuery,如果我问问题荒谬的问题。输入表格不工作时,从jquery调用它不工作ajax

基本上我有一个像下面的形式;

<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.php中包括

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

我行打电话captcha.php但是和在页面上显示出来,表单不适用于验证码输入。我应该以不同的方式称呼它,我无法找到任何我应该做的事情。

编辑: 它似乎captcha_code的输入值不发送/发布正确。如果我使用嵌入到登录表单中的captcha.php代码,则不起作用。 在此先感谢,

回答

0

它出现您的验证码输入是在<form>元素之外,因此它将不会包含在POST数据当您serialize()窗体。移动表单元素中的输入。

你似乎错过了一些右括号和大括号。

从成功函数做return false什么都不做,因为异步性质。相反,您应该从提交事件返回false,或者防止默认。

带有注释的变化(假设你移动的验证码输入)更正代码:

$("#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功能自动缩进它。

+0

所以你说ajax加载函数应该发布captcha输入的值对吗?代码确实是我应该错过的。 div MyDynamicDiv位于表单内 – Egemen 2015-03-02 08:26:21