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 に正常に渡されているように見えますが (Web ページ上のボックスをソートできるため)、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) です。

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 に答える