【问题标题】:Load Ajax content on same php page在同一 php 页面上加载 Ajax 内容
【发布时间】:2014-05-26 19:03:30
【问题描述】:

我目前在尝试将数据发送到同一个 php 页面时遇到问题。 我的问题如下:我正在通过 Ajax 从一个 jQueryUI 选项卡提交一个表单,并且我正在尝试将数据发送回该选项卡中加载的同一个 php 页面。

这是我的 Ajax 部分代码,它正在工作,因为我可以看到成功部分返回的数据:

$('#query').submit(function(event){
    event.preventDefault();
    var formData = new FormData($(this)[0]);            

    var request = $.ajax({
        type: 'POST',
        url: 'tab_rechercher.php',
        data: formData,
        contentType: false,
        processData: false,
        success: function(data){
            alert(data);
        },
        error: function(msg){
            alert(msg);
        }
    });             
});

现在这给了我一个数组,其中包含表单数据以及整个 html 页面,如下所示:

<form id="query" method="post" action="tab_rechercher.php">
<fieldset>
    <legend>Recherche d&apos;items dans une soumission ou bon de commande</legend>
    <table class="table_spacing">
        <tr>
            <td>Description de l&apos;item: </td>
            <td><input type="text" name="item_description"></td>                
        </tr>
        <tr>
            <td colspan="2" style="text-align:right;"><input id="rechercher" type="submit" value="Rechercher"></td>
        </tr>
    </table>
</fieldset>

问题是在我的 php 页面中,$_POST 保持为空

if(empty($_POST) === false){
print_r($_POST);}

打印永远不会发生。

我怎样才能把数据传回php页面? 谢谢

【问题讨论】:

  • 目前还不清楚是什么问题。您发出 AJAX 请求并取回您期望的数据?什么失败了? if(empty($_POST) === false) 的检查在哪里?你什么时候使用它?您在执行此检查时提出什么要求?
  • 失败是我通过发出警报从 javascript 获取数据,但我没有在 php.ini 中获取它。检查在 php 代码中,我在加载 php 页面时使用它。它仅用于测试目的,我只想知道表单中的数据是否被发送到 php 文件
  • 听起来您误解了客户端代码和服务器端代码之间的根本区别,以及请求和响应的顺序。当您的 AJAX 请求进入 PHP 页面时,它是一个 POST 请求,服务器端代码将能够响应该请求。当您最初加载页面时,它是一个 GET 请求,因此您的条件在那时的行为会有所不同。 AJAX 调用返回的数据在调用之后在客户端可用,而不是在调用 before 执行的服务器端代码中可用。完全不清楚您的活动顺序是什么。
  • 感谢您澄清这一点。现在,我该如何响应该请求,以便在服务器端而不是客户端完成操作?
  • 好吧,AJAX 请求是在服务器端处理的。因此,您可以在发出该请求时执行您想要的任何服务器端操作。如果在该 AJAX 请求之后,您向用户展示了一个新表单或某种新选项以在客户端收集更多信息,那么您需要向服务器端代码发出另一个请求(AJAX 或标准表单 POST ) 来执行另一个服务器端操作。

标签: php jquery ajax jquery-ui-tabs


【解决方案1】:

在我看来,您从未真正发布过表单。您确实通过 AJAX 发布它,但它位于另一个“线程”中,而不是您当前正在查看的那个。要按照您的意愿发布它,您需要另一个函数,它只调用 $('#query').submit();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多