Ajax Updater中的Javascript变量

时间:2012-10-17 00:36:34

标签: javascript ajax

我正在尝试使用以下代码将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级)。

1 个答案:

答案 0 :(得分: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);