我有以下代码可以使用:
<script type="text/javascript">
$(document).ready(function() {
// Initialise the table
$('#table_1').tableDnD({
onDrop: function(table, row) {
$.tableDnD.serialize();
$.ajax({
type: "POST",
url: "test.php?"+$.tableDnD.serialize(),
data: "",
success: function(html){
alert("Success");
}
});
}
});
});
</script>
将数据发送到test.php:
<?php
$table_1[] = $_GET['table_1'];
$i = 0;
if(!empty($table_1[0])){
foreach($table_1 as $value) {
foreach($value as $row){
$i++;
mysql_query("UPDATE mytable SET tableOrder='$i' WHERE id = '$row'");
}
}
}
?>
正如您所看到的,table_1数组使用$ _GET检索数据,但是ajax代码表示我们正在使用POST发送。如果我将$ _GET更改为$ _POST则不再有效。这是为什么?
答案 0 :(得分:5)
当您从$_POST
阅读时,您应该传递data
中的值而不是URL查询字符串中的值。
您的JavaScript代码必须更改如下:
$.ajax({
type: "POST",
url: "test.php",
data: $.tableDnD.serialize(),
success: function(html){
alert("Success");
}
});
然后你就能做到:
<?php
$table_1[] = $_POST['table_1'];
?>
您的orignal代码正常工作,因为在下面的评论中注明Mike Sherov,无论用于提交数据的HTTP动词如何,都可以使用$_GET
访问URL查询字符串中传递的任何数据。
答案 1 :(得分:1)
那是因为你把参数放在了URL中(这是一种GET方式)。要使用POST参数,必须将其放在数据区域中。像这样。
<script type="text/javascript">
$(document).ready(function() {
// Initialise the table
$('#table_1').tableDnD({
onDrop: function(table, row) {
$.tableDnD.serialize();
$.ajax({
type: "POST",
url: "test.php"+,
data: "" + $.tableDnD.serialize(),
success: function(html){
alert("Success");
}
});
}
});
});
</script>
假设$.tableDnD.serialize()
生成有效的查询字符串。
希望这有帮助。
答案 2 :(得分:0)
我认为这是因为您使用查询字符串构建POST URL并将tableDnD中的值添加到您的URL中。
请参阅the documentation,特别是“向服务器发送数据”部分。
答案 3 :(得分:0)
url: "test.php?"+$.tableDnD.serialize(),
此部分生成一个get请求,您需要像这样使用它:
$.ajax({
type: "POST",
url: "test.php",
data: $.tableDnD.serialize(),
success: function(html){
alert("Success");
}
});
答案 4 :(得分:0)
您的脚本不会通过POST方法发送任何数据,而广告目标文件是GET数据,PHP只会将其视为通过网址传递的日期。
您需要将数据放入数据选项中。 ;)