我有一个从数据库中获取所有数据的表单,为了更新我需要序列化数据的数据。
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中检索这些数据以便我更新数据库?
答案 0 :(得分:2)
您必须合并函数$.submit()
和$.post()
或$.ajax()
:
$('form').submit(function() {
$.ajax({
type: "POST",
url: $(this).attr("action"),
data: $(this).serialize(), // serializes the form's elements.
success: function(data) {
console.log(data); // show response from the php script
}
});
return false;
});
然后在PHP脚本中,您必须从$_POST
数组中读取数据。 E.g。
$tid = $_POST['tid'];
要调试传入的$ _POST数组,请使用var_dump()
或print_r()
。
如果您想要将响应发送到您的javascript,只需将您想要的内容打包到变量中,然后使用die(json_encode());
。 E.g:
$output = array('status' => true, 'message' => 'Success');
die(json_encode($output));
还需要添加$.post()
方法属性:
dataType : 'json'
答案 1 :(得分:0)
问题似乎是你正在重新定义$ _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
当然还有其他方法可以做到这一点。
每个密钥必须具有唯一标识符,否则它将覆盖先前定义的$ _POST值。
而不是:
tid=1&
tid=2&
tid=3&
你想要:
tid1=1&
tid2=2&
tid3=3&
答案 2 :(得分:0)
在你的PHP中,在顶部写下这个,你就会看到发生了什么。
//If method = GET
var_dump($_GET);
//If method = POST
var_dump($_POST);
exit();
这将显示正在传递的所有变量并停止脚本,以便您可以在页面上查看。然后让你的jquery将响应数据放在你可以查看的div中。
答案 3 :(得分:0)
看起来像PHP的parse_str()函数。 http://php.net/manual/en/function.parse-str.php