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

时间:2011-10-25 02:29:51

标签: php jquery ajax tablednd

我遇到了一个我无法弄清楚的问题。

我正在使用tableDND jQuery add in,它允许我拖放表的行。我想将这些行发送到服务器并将它们上传到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);

?>

2 个答案:

答案 0 :(得分: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)以查看您获得的所有值...只是出于好奇。

**抱歉所有的修改。我在工作中不断分心......

答案 1 :(得分:-1)

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