javascript - 无法从 Javascript 获取发布数据到 PHP
问题描述
这是我的第一篇文章,我被困在这个问题上,请帮助。
在一个页面上,我有两个 symfony 表单(没有类),我从中获得了一些存储在数组中的数据。第一个表格用于合同,另一个表格用于填写产品数据表(价格、数量等)。在这些表单中的每一个上,我都有一个提交按钮,我使用 ajax (onclick) 进行管理,以便在阻止数据处理的同时进入页面的前一步。列出产品的数据表是页面的结束步骤,在它下面我有一个验证按钮,我想用它来提交来自第一个表单的所有数据和我提交的数据表(其中是来自第二个表单的数据)以前存储在数组中。
我知道这样做的两种方法($.post 使用 jQuery,另一种使用 ajax,但都不起作用)。我设法重定向到另一个页面,但我无法获得 $_POST(或 $request)数据。
这是“最终按钮”ajax 部分(我在评论中尝试过的另一种方式):
$("#btn_final").click(function( e ) {
// console.log(produits);
// $.post(
// path_confirm,
// { produits: produits },
// function() {
// window.location.replace(path_confirm);
// }
// );
$.ajax({
url: path_confirm,
type: 'POST',
// dataType: 'html',
data: { 'produits' : produits, 'contrat' : contrat },
// context: this,
// dataType: "json",
success:function(data) {
window.location.replace(path_confirm);
// console.log(data);
},
error:function(data) {
alert("erreur");
}
});
这是我的基本控制器,据说正在获取数据:
public function getData(Request $request) {
// $produits = $request->request->get('produits');
// $contrat = $request->request->get('contrat');
if ($_POST) {
var_dump($_POST);die;
} else {
echo "<h1> no data :/ </h1>";die;
}
我被重定向到页面,但答案是“没有数据”。预先感谢您的帮助。
解决方案
因为重定向导致POST数据丢失,AJAX请求期望通过AJAX返回信息。添加阻止默认值以停止重定向:
$("#btn_final").click(function( e ) {
e.preventDefault();
然后观察开发者工具上的 AJAX 请求。如果$('#btn_final')
是提交按钮,您将需要使用.submit()
处理程序。
如果您打算重定向到处理数据的 PHP 脚本,则完全不需要 jQuery 或 AJAX。