jQuery UI 接收帖子到 PHP 文件


jQuery UI Receive Post to PHP file

我正在使用jQuery UI为UL创建拖放功能。这个想法是,您可以对列表中的项目进行排序,并且视图顺序将在数据库中更新(这是有效的)。我现在尝试添加的功能是能够将 LI 拖到不同的 UL 中并更新数据库,以便应用程序知道 LI 进入哪个列表。该项目可以移动到其他列表中,但我发布到的 php 文件没有更新数据库。

PHP 文件回显列表,如下所示:

<div class="list_div">
    <h3>List #1</h3>
    <ul id="listnumber_25" class="ui-sortable" unselectable="on">
        <li id="item_134">list item 1</li>
        <li id="item_135">list item 2</li>
        <li id="item_136">list item 3</li>
        <li id="item_137">list item 4</li>
    </ul>
</div>
<div class="list_div">
    <h3>List #2</h3>
    <ul id="listnumber_26" class="ui-sortable" unselectable="on">
        <li id="item_138">list item 1</li>
        <li id="item_139">list item 2</li>
        <li id="item_140">list item 3</li>
        <li id="item_141">list item 4</li>
    </ul>
</div>

JS看起来像这样:

//sort / change list
$(document).ready(function(){
    $(".list_div ul").sortable({
        receive: function(event, ui) {
            var list_id = this.id;
            var li_to_reassign = ui.item.attr('id');
            $.post("functions/changelist.php", { li_to_reassign: li_to_reassign, list_id: list_id } );
        }
    });
});

函数/变更列表.php:

<?
$list_id = $_POST['list_id'];
$list_id = substr('$list_id', 11); 
$li_to_reassign = $_POST['li_to_reassign'];
$li_to_reassign = substr('$li_to_reassign', 5); 
//------------------------------------------
// connect to DB
$host="localhost"; // Host name 
$username="********"; // Mysql username 
$password="********"; // Mysql password 
$db_name="**********"; // Database name 
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");
$sql="UPDATE tasks SET list_id='$list_id' WHERE id='$li_to_reassign'";
$result=mysql_query($sql);
?>

我似乎找不到问题!

在你的

php文件中,你从$_POST那里得到值,但是在你用新值重新确定这些变量之后,使用一个变量$str它甚至没有设置:

$list_id = $_POST['list_id'];
$list_id = $list_id($str, 11); 
$li_to_reassign = $_POST['li_to_reassign'];
$li_to_reassign = $li_to_reassign($str, 5); 

它应该是:

$list_id = $_POST['list_id'];
$li_to_reassign = $_POST['li_to_reassign'];

编辑(如果你想得到$_POST变量的减法,请使用函数子斯特,如下所示):

$list_id = $_POST['list_id'];
$list_id = substr($list_id, 11); 
$li_to_reassign = $_POST['li_to_reassign'];
$li_to_reassign = substr($li_to_reassign, 5);