2012-10-17 80 views
1

我嘗試使用下面的代碼來發送JavaScript變量「sortlist中」一個Ajax功能:JavaScript變量在阿賈克斯更新

<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(scale 1-10);我的PHP/MySQL經驗約爲7(1-10級)。

回答

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); 
+0

感謝塞巴斯蒂安。但它並沒有工作。與上面的代碼,我無法通過拖放在網頁上排序它們。我明白你要去哪裏。 – user1751658

+0

增加了第二個建議。 –

+0

還是不行。不會拖放到網頁上。 – user1751658