【问题标题】:How do i submit a hidden form using ajax when the page loads?页面加载时如何使用 ajax 提交隐藏表单?
【发布时间】:2015-06-05 14:22:38
【问题描述】:

如何在页面加载时使用 ajax 向 php 提交隐藏表单?

我有一个包含一个隐藏值的表单,我想提交它而不刷新页面或来自服务器的任何响应消息。如何在ajax中实现这一点?这是我的表格。我在同一页面中还有另一个表单。

<form id = "ID_form" action = "validate.php" method = "post">
 <input type = "hidden" name = "task_id" id = "task_id" value = <?php echo $_GET['task_id'];?>>
</form>

【问题讨论】:

  • 将隐藏值拉入ajax请求并发送。您在寻找如何发送 ajax 请求吗?
  • 我不明白你为什么需要表格?
  • yes.actually,并在页面加载时自动发送。
  • @meda,那我还能怎么做
  • 你应该可以存储$('#task_id').val()然后发送它

标签: javascript php jquery ajax forms


【解决方案1】:
I think you have doubts invoking ajax submit at page load. Try doing this -

<script type="text/javascript">
$(document).ready(function(){
    $.ajax({
        "url": "validate.php",
        "type": "post"
        "data": {"task_id": $("#task_id").val();},
        "success": function(){
        // do some action here
        }
    })
})
</script>

【讨论】:

    【解决方案2】:

    如果您使用 jQuery,您应该能够获取表单,然后在其上调用 submit()

    例如:

    var $idForm = $('#ID_form');
    $idForm.submit();
    

    【讨论】:

    • 他的问题明确表示他不希望页面刷新或从服务器获得响应。 .submit() 两者都可以。
    【解决方案3】:

    类似于 Zafar 使用 jQuery 的回答

    其实是jquery网站https://api.jquery.com/jquery.post/上的例子之一

    $(document).ready(function() {
        $.post("validate.php", $("#ID_form").serialize());
    });
    

    如果你想对你说你不想要的响应做任何事情,你可以使用 .done()、.fail() 和 .always()。

    在纯 JavaScript 中

    body.onload = function() {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("POST","validate.php",true);
        xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        xmlhttp.send("task_id=" + document.getElementById("task_id").value);
    };
    

    【讨论】:

    • 谢谢,纯javascript示例非常有用。
    【解决方案4】:

    简单的解决方案 - jQuery AJAX 按照其他人的建议发布值,但直接嵌入 PHP 值。如果您有多个表单,则可以根据需要添加更多键:值对。如果需要,添加成功/错误处理程序。

    <script type="text/javascript">
    $(document).ready(function(){
        $.post( "validate.php", { task_id: "<?=$_GET['task_id']?>" } );
    })
    </script>
    

    【讨论】:

      【解决方案5】:

      正如其他人所说,如果您想在后台发送数据,则无需表单。

      validate.php

      <?php
      
      $task_id = $_POST['task_id'];
      
      //perform tasks//
      
      $send = ['received:' => $task_id]; //json format//
      echo json_encode($send);
      

      JQuery/AJAX:

      $(function() { //execute code when DOM is ready (page load)//
          var $task = $("#task_id").val(); //store hidden value//
          $.ajax({
              url: "validate.php", //location to send data//
              type: "post",
              data: {task_id: $task},
              dataType: "json", //specify json format//
              success: function(data){
                  console.log(data.received); //use data received from PHP//
              }
          });
      });
      

      HTML:

      <input type="hidden" name="task_id" id="task_id" value=<?= $_GET['task_id'] ?>>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-19
        • 1970-01-01
        相关资源
        最近更新 更多