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