あなたのajax
呼び出しでは、文字列を送信しているだけです"{userValuesChanged}"
。
新しい値を送信する場合は、オブジェクトで指定します。
$("#slider").bind("userValuesChanged", function (e, data) {
$.ajax({
type: "GET",
dataType: "json",
url: "test.php",
data: { minValue: data.values.min },
async: false,
success: function (data) {
alert(data);
return true;
}
});
});
上記の重要なビットは次のとおりです。
data: { minValue: data.values.min },
...これは、スクローラーから受け取っminValue
たの値に設定されたというプロパティを持つオブジェクトを作成します。data.values.min
サーバー側スクリプトは、 というフィールドを探しますminValue
。(当然、 の他の値も必要なdata.values
場合は、それらも含めることができます。)
ただし、スライダーが変わるたびにそれを行うのは少し大変かもしれません。値が変化しなくなったときにイベントが1 回userValuesChanged
だけ発生する場合、上記は問題ありません。ユーザーがスクローラーを動かしているときに継続的に起動すると、多くの呼び出しがトリガーされるため、良くありません。ajax
その場合 (ユーザーが値を変更すると繰り返し発生する場合)、ユーザーが変更をやめたときに別のイベントを提供するかどうかを確認します。
そうでない場合は、代わりにレート制限できます。必要に応じて、次のようにします。
$("#slider").bind("userValuesChanged", function (e, data) {
saveNewValues(data.values.min);
});
var pendingSaveTimer = 0;
function saveNewValues(minValue) {
// cancel any previous save we have pending
clearTimeout(pendingSaveTimer);
pendingSaveTimer = 0;
// Schedule saving the new value in half a second
pendingTimer = setTimeout(function() {
// Clear our timer var
pendingTimer = 0;
// Do it
$.ajax({
type: "GET",
dataType: "json",
url: "test.php",
data: { minValue: minValue },
async: false,
success: function (data) {
// Do something here if needed
}
});
}, 500); // 500 = 500 milliseconds = half a second
}
値を保存する前に 0.5 秒待機し、その 0.5 秒以内に新しい値が入ってくると、その保存をキャンセルします。