【问题标题】:Sending data after password validation密码验证后发送数据
【发布时间】:2017-03-13 05:49:32
【问题描述】:

我有一个将用户插入数据库的表单。另一方面,我有两个密码验证脚本和检索 php 结果的 ajax 脚本。

现在这两个脚本是分开工作的。

我应该怎么做才能让 ajax 脚本在密码验证后运行?

密码验证

 function Validate() {
        var password = document.getElementById("UserPwd").value;
        var confirmPassword = document.getElementById("ConfirmUserPwd").value;
        if (password != confirmPassword) {
            alert("Please enter the same password");
            return false;
        }
        return true;
    }

脚本

  $.ajax({
      url: "insert_sp.php",
      method: "POST",
      data: {submit: 'true'},
      success: function(response) {

        var data = JSON && JSON.parse(response) || $.parseJSON(response);
        alert(data);
    }
});

更新

isset : if(isset($_POST['Submit']))

按钮:<input type="submit" name="Submit" value="Submit"/>

$(function() {
  $("#myForm").on("sumbit", function(e) {
    e.preventDefault(); 
    var password = $("#UserPwd").val(),
      confirmPassword = $("#ConfirmPassword").val(); 
    if ($.trim(password) === password && 
        password !== "" &&               
        password === confirmPassword) { 
      $.ajax({
        url: "insert_sp.php",
        method: "POST",
        data: {
          submit: 'true' 
        },
        success: function(response) {
          var data = JSON && JSON.parse(response) || $.parseJSON(response);
          alert(data);
        }
      });
    }
    else {
      alert("Please enter the same password");
    }
  });
});

【问题讨论】:

标签: javascript jquery ajax validation


【解决方案1】:
  1. 切勿在表单中将任何内容称为“提交”。如果您需要,它将隐藏提交事件。

  2. 使用表单的提交事件和 event.preventDefault 而不是提交按钮点击事件

  3. 如果你有 jQuery,为什么不一直使用它呢?

  4. 记得在插入之前在服务器上进行完全相同的验证

我不能让你成为一个正在运行的 sn-p,因为 SO 不允许在他们的页面中提交。这是代码 - 它应该按设计工作

$(function() {
  $("#myForm").on("submit", function(e) {
    e.preventDefault(); // cancel form submission
    var password = $("#UserPwd").val(),
      confirmPassword = $("#ConfirmPassword").val();
    console.log(password,confirmPassword)  
    if ($.trim(password) === password && // spaces?
      password !== "" && // empty?
      password === confirmPassword) { // the same?
      $.ajax({
        url: "insert_sp.php",
        method: "POST",
        data: {
          Submit: 'true' // remember to change the $_POST test too
        },
        success: function(response) {
          var data = $.parseJSON(response);
          console.log(data);
        }
      });
    } else {
      alert("Please enter the same password");
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<form id="myForm">
  <input type="password" value="" id="UserPwd" /><br/>
  <input type="password" value="" id="ConfirmPassword" /><br/>
  <input type="submit" name="Submit" value="Submit" />
</form>

【讨论】:

  • 您的观点是永远不要在表单中调用任何“提交” 指的是按钮的提交吗?我是初学者并试图理解。如果我告诉你我使用if(isset($_POST['submit'])) 提交,有什么不同吗?
  • 重点是 form.submit 将不再是事件而是按钮。只需将 $_POST['submit'] 更改为 $_POST['Submit'] 或其他内容,然后根据需要将按钮名称更改为 Submit。
  • 好的,我明白了。我已经尝试过您的解决方案,但是当我输入不同的密码时,数据仍会发送到数据库。 @mplungjan
  • 查看控制台
  • 没有错误。 @mplungjan 。我更新了我的问题。不介意的话可以看看吗?
【解决方案2】:

密码验证成功后进行ajax请求的其他功能,然后调用如下的ajax函数。

function ajax_request(){
$.ajax({
url: "insert_sp.php",
method: "POST",
data: {submit: 'true'},    
success: function(response) {
var data=JSON&&JSON.parse(response)||$.parseJSON(response);
alert(data);
console.log(data);
}
});

function Validate() {
var password = document.getElementById("UserPwd").value;
var confirmPassword = document.getElementById("ConfirmPassword").value;
if (password == confirmPassword) {
ajax_request();            
}else{
alert("Wrong Password");
return false;
}
}

【讨论】:

  • 海@bharatsavani 。您能否指导我关于 在密码验证后进行 ajax 请求的其他功能 的观点?我有点迷路了。
  • 您要求的密码是正确的,所以如果密码正确,那么调用 ajax 函数简单逻辑。 @Mint
  • 我现在明白了,我尝试了您的解决方案,但它们不起作用。无法提交表单,也没有密码验证。任何想法? @bharatsavani
  • 您需要哪种类型的密码验证
  • 我只需要验证密码以确保用户在发送他们的数据之前输入他们的密码并确认他们@bharatsavani
猜你喜欢
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 2012-07-03
  • 2023-03-22
  • 2021-10-22
相关资源
最近更新 更多