【问题标题】:How to get form data with $_POST from same page when it is submitted by $.ajax由 $.ajax 提交时如何从同一页面获取带有 $_POST 的表单数据
【发布时间】:2013-01-23 15:59:32
【问题描述】:

我有 index.php 页面,在该页面中,有一个表单。在表单中,我有一个文本字段,我想在该 index.php 页面中使用 $_POST 检索该值。

问题是我在 index.php 中使用了 JQUERY AJAX。我也有$.ajax 功能。 $.ajax 函数是将数据传递到另一个 PHP 页面。如果我在$.ajax函数中返回false,表单将不会提交。

所以我无法使用$_POST 检索该值。如果我在$.ajax 函数中没有返回false,我可以在index.php 中使用$_POST 检索表单值。但是,$.ajax 函数将不起作用。我怎样才能使它同时工作 $.ajax 函数和 $_POST 从 index.php 中的文本字段中获取值。

提前致谢。

【问题讨论】:

  • 这应该是相当基本的。您阻止默认提交操作,而不是 ajax 调用,并使用 ajax 向服务器上的 PHP 脚本发送 POST 请求,您可以使用 $_POST 检索该脚本。
  • 由于我的需要,我需要在 index.php 页面中使用 $_POST 而不是其他页面。我知道我可以使用 $_POST 从其他页面检索表单值。但是,我的问题是我只想使用 $_POST 检索表单值,并且该页面中还使用了 $.ajax 函数。
  • 那你不明白它是如何工作的,你不能真正在客户端的页面中使用 $_POST,因为它是一种基于服务器的语言,你必须在服务器上运行一个脚本在进行ajax调用时,否则不需要ajax,您只需提交表单并重新加载页面,这可能会按预期工作。

标签: php jquery ajax


【解决方案1】:

我建议您使用会话变量。获取 POST 后,将 SESSION 设置为要临时存储的值。然后,在您使用它们之后,您可以清空会话。

【讨论】:

    【解决方案2】:
        $(document).on("submit","form", function() {
           $.post('index.php', $("form").serialize(),function(d) {
    
           });
           return false;
         });
    

    【讨论】:

      【解决方案3】:

      你可以用不同的方法来做到这一点,比如

      1:您可以有一个隐藏字段和表单,然后在发送 ajax 调用时使用相同的文本字段值填充该字段,然后在完成 ajax 调用后提交该表单

      2:您还可以将文本字段的值保留在 java 脚本变量中。然后使用 javascript 制作一个临时表单并使用该表单提交该变量。

      【讨论】:

        【解决方案4】:

        ajax发送成功后可以调用$("#form").submit()

        $.ajax({ 
        url: 'getPost.php', 
        type: 'POST', 
        data: value,
        success: function(data){
         $('#container').html(data); 
         $('#myForm').submit();
        }
        });
        

        在哪里value = {name: "noname"} // javascript object(json)

        【讨论】:

        • 谢谢亚历山德鲁。我会努力做到的:)
        • 一定要使用 e.preventDefault() 来阻止表单提交。
        • 这样做是否正确? $.ajax({ url: 'getPost.php', type: 'POST', data: {value:value } }).done(function(data) { $('#container').html(data); $ ('#myForm').submit(); return false; });
        • 我刚刚检查了 jQuery 文档,我看到他们稍微改变了 ajax 东西(我不确定我的代码是否仍然有效,具体取决于您使用的 jquery 版本),我想更正您的代码将是 {value: "value"} 并删除 return false
        • 现在我再次尝试使用您在顶部显示的方式。页面刷新并显示我的 index.php 中的一些数据。但问题是 ajax 部分不起作用。我正在使用 Jquery 1.9.0。我使用的方式是here。 $.ajax({ url: 'process_tweets.php', type: 'POST', data: {value: value, location: location, radius: radius, radiusValue: radiusValue }, success: function(data){ $('# container').html(data); $('#myForm').submit(); return false; } });
        猜你喜欢
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-22
        • 2017-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多