Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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
Jquery Ajax将数据序列化到PHP_Php_Jquery_Ajax - Fatal编程技术网

Jquery Ajax将数据序列化到PHP

Jquery Ajax将数据序列化到PHP,php,jquery,ajax,Php,Jquery,Ajax,我有一个从数据库中获取所有数据的表单,为了更新获取的数据,我需要序列化数据 alert($("form").serialize()); 这就是输出 tid=1&tname=T+Cap&tsize=XS&quantity=1&tprice=1200&tid=2&tname=Super&tsize=XS&quantity=1&tprice=2800&tid=3&tname=Dota+Tees&tsize

我有一个从数据库中获取所有数据的表单,为了更新获取的数据,我需要序列化数据

alert($("form").serialize());
这就是输出

tid=1&tname=T+Cap&tsize=XS&quantity=1&tprice=1200&tid=2&tname=Super&tsize=XS&quantity=1&tprice=2800&tid=3&tname=Dota+Tees&tsize=XS&quantity=1&tprice=700

如何在php中检索这些数据以便我更新数据库?

问题似乎是您正在重新定义$\u POST变量。它们不能包含与您当前发送的名称/密钥相同的名称/密钥。本质上,它就像重新定义一个变量,它将不再包含以前的值

tid=1&tname=T+Cap&tsize=XS&quantity=1&tprice=1200&tid=2&tname=Super&tsize=XS&quantity=1&tprice=2800&tid=3&tname=Dota+Tees&tsize=XS&quantity=1&tprice=700
注意您是如何多次调用
tid
和其他键的?相反,您可能希望给它们单独的名称,或者将一个值数组传递给PHP

示例:

tid=1&tname=T+Cap&tsize=XS&quantity=1&tprice=1200&tid2=2&tname2=Super&tsize2=XS&quantity2=1&tprice2=2800&tid3**=3&tname3=Dota+Tees&tsize3=XS&quantity3=1&tprice3=700
当然,还有其他方法可以做到这一点

每个键必须有一个唯一的标识符,否则它将覆盖先前定义的$\u POST值

而不是:

tid=1&
tid=2&
tid=3&
您希望:

tid1=1&
tid2=2&
tid3=3&

在您的PHP中,在顶部写下这个,您将看到发生了什么

//If method = GET
var_dump($_GET);
//If method = POST
var_dump($_POST);
exit();

这将显示正在传递的所有变量并停止脚本,以便您可以在页面上查看。然后让jquery将响应数据放在一个可以查看的div中。

您必须组合函数
$.submit()
$.post()
$.ajax()

然后在PHP脚本中,您必须从
$\u POST
数组中读取数据。例如

$tid = $_POST['tid'];
要调试传入的$\u POST数组,请使用
var\u dump()
print\u r()

如果您想向javascript发送响应,只需将您想要的任何内容打包到变量中,然后只需使用
die(json_encode())。例如:

$output = array('status' => true, 'message' => 'Success');
die(json_encode($output));
还需要将其添加到
$.post()
方法属性:

dataType : 'json'

看起来像是PHP的parse_str()函数的作业

我只得到$u POST数据的最后一个值。如何将它们放入阵列?从技术上讲,它们已经在阵列中了$_POST是数组。如果您使用var_dump($_POST[]),您将看到该数组中显示的所有数据。查看我刚才添加的内容,看看这是否有助于理解这一点。输出仍然是在$_POST中传递的最后一个值,即tid=3&tname=Dota+Tees&tsize=XS&quantity=1&tprice=700OH!我知道发生了什么。您正在重新定义您的post VAR。请给我一分钟,我将在回答部分解释您的问题。@MichaelDoye仍在获取$\u POST数据的最后值。我使用这个$tid=$\u POST['tid']$tname=$_POST['tname']$tsize=$\u POST['tsize'];
dataType : 'json'