2017-06-14 43 views
0

我在index.php中有兩種模式形式,一種用於登錄,另一種用於註冊。從登錄模式您可以訪問註冊表格。我想在寄存器模式窗體中顯示一個錯誤,而無需重新加載頁面或重定向到另一個頁面。 我使用AJAX,但提交後,頁面重定向到一個空白頁register.php,顯示1AJAX在沒有重新加載頁面的情況下在模式窗體中顯示錯誤

在登記表我有一個空div

<div id = "error-reg"></div> 

的register.php它是行動爲形式,看起來像

if ($count == 0) { 
    if ($check == 1) 
     $query = "INSERT INTO .. 
    elseif ($check == 2) 
     $query = "INSERT INTO .. 
    else { 
     $query = "INSERT INTO .. 
    } 

    if ($db->query($query)) { 
     echo "1"; 
    } else { 
     echo "2"; 
    } 
} else { 
    echo "3"; 
} 

在JS我有

$("#btn-rg").on('submit',function (e) { 
    e.preventDefault(); 
    var form=$(this); 
    $.ajax({ 
     url : 'register.php', 
     type : 'POST', 
     data : $('#id02').serialize(), 
     success : function (msg) { 
      if(msg=="1") $('#error-reg').html('success'); 
     }, 
     error: function (msg) { 
      if(msg=="2") $('#error-reg').html('Error while registering.Please try again'); 
       if(msg=="3") $('#error-reg').html('The username already exists.'); 
    } 
}); 

});

回答

0

在php中,你只是回顯一個數字,瀏覽器會將其解釋爲成功。

你可以改變你的js文件:

$("#btn-rg").on('submit', function(e) { 
    e.preventDefault(); 
    var form = $(this); 
    $.ajax({ 
     url: 'register.php', 
     type: 'POST', 
     data: $('#id02').serialize(), 
     success: function(msg) { 
      if (msg == "1") $('#error-reg').html('success'); 
      if (msg == "2") $('#error-reg').html('Error while registering.Please try again'); 
      if (msg == "3") $('#error-reg').html('The username already exists.'); 
     } 
    }); 
}); 

不知道它會工作,你可能可以通過拋出一個HTTP錯誤代碼調整你的PHP文件做交替。

if ($count == 0) { 
    if ($check == 1) 
     $query = "INSERT INTO .." 
    else if ($check == 2) 
     $query = "INSERT INTO .." 
    else { 
     $query = "INSERT INTO .." 
    } 

    if ($db->query($query)) { 
     echo "1"; 
    } else { 
     echo "2"; 
     http_response_code(400); 
    } 
} else { 
    echo "3"; 
    http_response_code(400); 
} 
+0

但是消息不顯示在窗體中 – Alina

相關問題