【发布时间】: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'items dans une soumission ou bon de commande</legend>
<table class="table_spacing">
<tr>
<td>Description de l'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