AJAX-PHP如何将变量返回到原始AJAX脚本并更改输入值

时间:2019-01-21 12:27:38

标签: php html ajax

我使用验证码保护我的表单,以防止使用漫游器提交大量的表单。 此表单可与AJAX一起使用,并且不会像平常一样刷新页面。 我现在已完成所有设置,并且正在运行。但.. 因此,这就是我正在谈论的帮助理解的表格。

enter image description here

当您单击请求新密码时,我需要在输入字段上更改代码。 我确实在newpass.php中请求了这样的密码后更改了代码

$_SESSION['capcode3'] = $capcode3;

这是我的JavaScript代码:

<script>
    $("#formoid").submit(function(event) {
      event.preventDefault();
      var form_data = $(this).serialize(); //Encode form elements for submission

      $.ajax({
            type: "POST",
            url : "data/newpass.php/",
            data : form_data 
        });
      document.getElementById("captcha").value = "<?php echo $_SESSION['capcode3']; ?>";
    });
</script>

因此,通过使用document.getElementById可以更改输入值,但是可以设置旧值,而不是设置新值。 因此,如果代码为ABC123且新代码为DEF456,则不会更改为DEF456

是否有更好的方法将新代码发送回输入字段?

注意:我已经测试过$ _SESSION ['capcode3']是否会更改其值为正值。

2 个答案:

答案 0 :(得分:0)

您没有在ajax中指定成功处理程序。 Ajax是异步处理的,因此需要回调到成功处理请求后将数据传递到的地方

  $.ajax({
        type: "POST",
        url : "data/newpass.php/",
        success: function(data) {
             //change UI here
             document.getElementById("captcha").value = data;
        },
    });

答案 1 :(得分:-1)

请在ajax成功后添加代码,因为可能会在ajax成功时更改会话值。

  $.ajax({
        type: "POST",
        url : "data/newpass.php/",
        data : form_data,
        success :function(data){
           document.getElementById("captcha").value = data;
        }
    });

请尝试这个。