2010-01-31 58 views
2

我有以下的代码工作:

<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,则不再有效。为什么是这样?

回答

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']; 
?> 

您的一部开拓创新的代码是因为工作作为Mike Sherov中指出无论用于提交数据的HTTP动词如何,在URL查询字符串中传递的任何数据都可以使用$_GET进行访问。

+0

您忘记了删除?在url后面。 (请参阅下面的示例) – RJD22 2010-01-31 22:48:10

+2

不管使用什么方法,在url中传递的任何数据总是被视为GET。 – 2010-01-31 22:48:19

+0

@ RJD22:谢谢...修复它:) – 2010-01-31 22:57:40

0

我认为这是因为您正在使用查询字符串构建POST URL并将来自tableDnD的值添加到您的URL。

请参阅the documentation,特别是“发送数据到服务器”部分。

0
url: "test.php?"+$.tableDnD.serialize(), 

这部分产生,你需要使用这样一个GET请求:

$.ajax({ 
    type: "POST", 
    url: "test.php", 
    data: $.tableDnD.serialize(), 
    success: function(html){ 
     alert("Success"); 
    } 
    }); 
0

您的脚本不发送数据槽POST方法,和广告目标文件是一些与获取数据,PHP只是将其视为通过URL传递的日期。

您需要将数据放入数据选项。 ;)

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()产生一个有效的查询字符串。

希望这会有所帮助。