丢失第一个数据元素jquery ajax调用


losing first data element jquery ajax call

我遇到了一个我不知道的问题。

我正在使用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);
?>

这是我的粗略猜测,因为我很快就要走了。

我认为,因为"数据"被转换为查询字符串,它被误读。我想你的帖子可能正在读这个:

$_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';

因为第一次出现&号是终止变量

这可能看起来很傻,但你可以通过在"batting"周围加上双引号来避免整个问题。有效地将它作为字符串包含。

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

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

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

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

尝试var_dump($_POST)在php中看到你得到的所有值…只是出于好奇。

**抱歉所有的编辑。我总是在工作中分心…

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