1

我正在尝试使用以下代码将 javascript 变量 'sortlist' 发送到 Ajax 函数:

<div id = "output">Drag to sort</div>
<script type="text/javascript">

var session = <? echo $sesh; ?>;
var track   = <? echo $trk; ?>;

var sortlist = "sortlist_" + session + "_" + track; 

Sortable.create(sortlist,{
    onUpdate:function(){
        new Ajax.Updater('output','program_sort.php',
           {onComplete:function(request){}, 
               parameters:Sortable.serialize(sortlist), 
               evalScripts:true, 
               asynchronous:true}
        )
    }
})
</script>

该变量似乎已成功传递给 Sortable.create (因为我可以对网页上的框进行排序),但它似乎没有传递给 Ajax.updater 中的 Sortable.serialize (因为它不再将排序顺序值写入数据库)。

当我在 Sortable.serialize 中使用文字值时,此代码有效,例如

parameters:Sortable.serialize('sortlist_1_1'),

我尝试使用 sortlist 作为变量,在 Sortable.serialize 中使用和不使用单引号和双引号均无济于事。成功传递此变量信息所需的格式是什么?

作为参考,我的 AJAX/javascript 经验大约是 1(1-10 级);我的 PHP/MySQL 经验大约是 7(1-10 级)。

4

1 回答 1

0

尝试这个:

Sortable.create(sortlist,{
    onUpdate:function(sortlist){return function(){
        new Ajax.Updater('output','program_sort.php',
           {onComplete:function(request){}, 
               parameters:Sortable.serialize(sortlist), 
               evalScripts:true, 
               asynchronous:true}
        )
    };}(sortlist);
})

那么让我们更进一步:

function(sortlist){
Sortable.create(sortlist,{
    onUpdate:function(){
        new Ajax.Updater('output','program_sort.php',
           {onComplete:function(request){}, 
               parameters:Sortable.serialize(sortlist), 
               evalScripts:true, 
               asynchronous:true}
        )
    }
});
}(sortlist);
于 2012-10-17T00:45:03.850 回答