我尝试使用以下代码将 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'),
我尝试在 Sortable.serialize 中使用 sortlist 作为变量(带或不带单引号和双引号),但无济于事。成功传递这个变量信息需要什么格式?
仅供引用, 我的 AJAX/javascript 体验约为 1(等级 1-10);我的 PHP/MySQL 经验约为 7 分(等级 1-10)。
最佳答案
试试这个:
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);
关于Ajax 更新程序中的 Javascript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12925515/