0

我有一个我无法弄清楚的问题。

我正在使用 tableDND jQuery 插件,它允许我拖放表格的行。我想将这些行发送到服务器并将它们上传到 mySQL 数据库。

我的代码在下面,基本上当我使用 PHP 时,击球变量的第一个元素消失了。有任何想法吗?

所以我有以下javascript:

$('#order').tableDnD({
        onDrop: function(table, row) {

            var batting = $.tableDnD.serialize();
            var id = <?php echo $id;?>;

            $.ajax({
                type: 'POST',
                url: 'update_batting.php',
                data: '{ "batting":' + batting + ', "id":'+ id +' }',
                dataType: 'json',
            });

        }
    });

和以下php:

<?php

$batting = json_encode($_POST['order']);

$query = "INSERT INTO test (t) VALUES ('$batting')";
mysql_query($query);

?>
4

2 回答 2

1

好的,这是我对这个的粗略猜测,因为我必须尽快去......

我认为由于“数据”被转换为查询字符串,所以它被误读了。我认为您的帖子可能正在阅读以下内容:

$_POST['batting'] = 'order[]=110209';
$_POST['order'] = 'order[]=100245&order[]=100007&order[]=100296&order[]=10‌​0213&order[]=100071&order[]=100125&order[]=110206&order[]=110205&order[]=100152&o‌​rder[]=100247&order[]=100329&order[]=100299&order[]=100243';
$_POST['id'] = '662852670';

因为&符号的第一次出现终止了您的变量。

这可能看起来很愚蠢,但是您可以通过用双引号将“击球”括起来来逃避整个问题。有效地将其包含为字符串。

data: '{ "batting":"' + batting + '", "id":'+ id +' }',

这会将您预期的 $_POST['order'] 变量更改为 "$_POST['batting'] 但是,您的数据对象应该像我最初在上面的评论中提到的那样包含在内。

data: {order: '"' + batting + '"', id:id},

而不是像示例代码中那样将其作为没有键的字符串发送。

在 php 中尝试 var_dump($_POST) 以查看您获得的所有值......只是出于好奇。

**对不起所有的编辑。我在工作中经常分心...

于 2011-10-25T03:00:14.557 回答
-1

您是否尝试过删除 ' + batting + ' .... 两侧的空格,例如 '+ batting +'....

于 2011-10-25T02:47:14.920 回答