JQuery Ajax 表单序列化在第一次提交时不会给出新结果

JQuery Ajax form serialize does not gives new result when submit first time

本文关键字:新结果 结果 序列化 表单 Ajax 第一次 提交 JQuery      更新时间:2023-09-26

>我在使用 jquery ajax 调用提交数据时遇到问题

我正在使用的以下jquery ajax调用函数

$(".update-pages").bind('submit',function(){
        var urlReq = "perform/update_pages.php?sbmt_change=&" +$(this).serialize();
       $.ajax({
          method : 'GET',
          url : urlReq,
          success : function(data){
              alert(data);
          }
       });
       return false;
    });

HTML 表单为:

<form action="perform/update_pages.php" class="update-pages" method="GET">
    <input type="hidden" value="about" id="getLoc" name="about" />
    <textarea name="txt" rows="20">
    </textarea>
    <br />
    <input type="submit" class="btn btn-primary btn-lg" value="UPDATE" name="sbmt_change" />
</form>

PHP 文件是(执行/update_pages.php):

if (isset($_GET['sbmt_change'])) {
        $contents = urlencode($_GET['txt']);
        $data = file_get_contents("http://localhost/web/about.php?contents=$contents");
        $put = file_put_contents("../../../mysite/about.php", $data);
        if ($put) {
            echo 'updated'; 
            exit();
        }else{
            echo 'unable to update pages';
            exit();
        }
}else{ // if not form submitted
    header("location:../");
    exit();
}

问题:当我提交数据时,serialize()发送textarea更改之前的旧结果,但是当我再次提交时serialize()发送新结果,并且同样的麻烦一次又一次地开始。 偶数时间提交发送新数据,奇数时间提交发送旧数据。

我该如何解决这个问题?

这是我刚刚在我的系统中测试的代码,它工作正常。我在每次提交时都会获得适当的数据。

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(".update-pages").bind('submit',function(){
        var urlReq = "server.php?sbmt_change=&" +$(this).serialize();
       $.ajax({
          method : 'GET',
          url : urlReq,
          success : function(data){
              alert(data);
          }
       });
       return false;
    });
})
    </script>
</head>
<body>
<form action="server.php" class="update-pages" method="GET">
    <input type="hidden" value="about" id="getLoc" name="about" />
    <textarea name="txt" rows="20">
    </textarea>
    <br />
    <input type="submit" class="btn btn-primary btn-lg" value="UPDATE" name="sbmt_change" />
</form>
</body>
</html> 

服务器端代码:

<?php 
if (isset($_GET['sbmt_change'])) {
        print_r($_GET);
}else{ // if not form submitted
}
?>
嗨,

下面是您的代码中的一些更改,请使用下面修改后的代码

<form action="" class="update-pages" method="GET">
    <input type="hidden" value="about" id="getLoc" name="about" />
    <textarea name="txt" rows="20">
    </textarea>
    <br />
    <input type="submit" class="btn btn-primary btn-lg" value="UPDATE" name="sbmt_change" />

<script>
    $(".update-pages").bind('submit', function () {
        $.ajax({
            method: 'POST', //also use GET
            url: 'http://localhost:82/stack/get.php', //HERE IS FULL SITE URL OF YOUR FILE
            data: $('.update-pages').serialize(),
            success: function (data) {
                alert(data);
            }
        });
        return false;
    });
</script>

得.php

<?php
  echo "<pre>";
  print_r($_REQUEST);
?>