Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';无法从Javascript获取到PHP的post数据_Javascript_Php_Jquery_Ajax_Symfony - Fatal编程技术网

Can';无法从Javascript获取到PHP的post数据

Can';无法从Javascript获取到PHP的post数据,javascript,php,jquery,ajax,symfony,Javascript,Php,Jquery,Ajax,Symfony,这是我的第一篇帖子,我被困在这上面了,请帮忙 在一个页面上,我有两个symfony表单(没有类),从中我可以得到一些存储在数组中的数据。第一个表单用于合同,另一个表单用于用产品数据(价格、数量等)填写产品数据表。在每一个表单上,我都有一个提交按钮,我使用ajax(onclick)来管理该按钮,以便在阻止数据处理的同时进入页面的前一步。列出产品的datatable是页面的结束步骤,在它下面我有一个validation按钮,我想用它来提交第一个表单中的所有数据和我以前存储在数组中的datatable

这是我的第一篇帖子,我被困在这上面了,请帮忙

在一个页面上,我有两个symfony表单(没有类),从中我可以得到一些存储在数组中的数据。第一个表单用于合同,另一个表单用于用产品数据(价格、数量等)填写产品数据表。在每一个表单上,我都有一个提交按钮,我使用ajax(onclick)来管理该按钮,以便在阻止数据处理的同时进入页面的前一步。列出产品的datatable是页面的结束步骤,在它下面我有一个validation按钮,我想用它来提交第一个表单中的所有数据和我以前存储在数组中的datatable(其中是第二个表单中的数据)

我知道两种方法(使用jQuery编写$.post和使用ajax编写另一种,但两者都不起作用)。我设法重定向到另一个页面,但无法获取$u POST(或$request)数据

这里是“最终按钮”ajax部分(我在评论中尝试了另一种方式):

这是我的基本控制器,据推测可以获取数据:

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;
    }
公共函数getData(请求$Request){
//$produits=$request->request->get('produits');
//$contrat=$request->request->get('contrat');
如果(美元邮政){
var_转储($_POST);模具;
}否则{
回显“无数据:/”模具;
}
我被重定向到页面,但答案是“无数据”。
提前感谢您的帮助。

因为重定向会导致POST数据丢失。AJAX请求希望通过AJAX返回信息。添加一个阻止默认值以停止重定向:

$("#btn_final").click(function( e ) {
    e.preventDefault();
然后观察开发人员工具上的AJAX请求。如果
$('btn_final')
是提交按钮,则需要使用
.submit()
处理程序


如果您计划重定向到处理数据的PHP脚本,则完全不需要jQuery或AJAX。

由于一个名为“重定向”的jQuery插件,我只用了一行代码就成功了。如果这可以帮助以后的人:

您需要的只是从视图中的此处导入脚本:

然后简单地写下:

$.redirect(url, [values, [method, [target, [traditional, [redirectTop]]]]])
就我而言,我写道:

$.redirect(path_confirm, {'produits': produits, 'contrat': contrat, 'pj': pj, 'idclient': id});

它是有效的。

是否定义了
produits
contrat
是的@FelDev,就在这里
数据:{'produits':produits,'contrat':contrat}
是的,我在.click()之前做了一个'console.log'函数,以确保在将它们放入ajax函数之前定义它们。您好,感谢您的快速回答。这不是提交按钮(我认为这样做是可以的),这就是我编写“.click()”函数的原因。我尝试使用提交按钮并编写了“.submit()”函数函数,但现在当单击按钮时,它什么也不做。我还添加了“e.preventDefault()lineOK-然后您可以只使用一个按钮,无需提交。您在哪里设置post变量?问题在于成功回调中的重定向。@HALIEMENTation您首先使用post参数对URL发出Ajax请求,然后丢弃结果并重定向到相同的URL,从而生成新的GET请求,而不包含任何参数参数。您在浏览器中看到的是第二个请求的结果。我的数组“contrat”是在第一个表单的.submit()函数之前定义的,而我的数组“produits”是在第二个表单的.submit()函数之前定义的。在这两个.submit()函数期间,我只是将数据推送到数组中,然后在两个submit()之后函数我得到了两个数组的填充。好的@JJJ我想我得到了,但是在发布数据后我应该如何重定向?我不应该在成功回调中重定向?
$.redirect(path_confirm, {'produits': produits, 'contrat': contrat, 'pj': pj, 'idclient': id});