我正在尝试使用ajax获取javascript变量(最终将其转换为php)。 我尝试过几件事。我试图在用户更改它时立即获取Jquery范围滑块的值(以便稍后保存值)。这是javascript:
$("#slider").bind("userValuesChanged", function(e, data){
console.log( + data.values.min );
});
一旦更改最小滑块,日志就会输出正确的值。 现在我想用ajax:
来获取这个userValuesChanged $.ajax({
type: "GET",
dataType: "json",
url: "test.php",
data: "{userValuesChanged}",
async: false,
success: function(data){
alert(data);
return true;
}
});
这是我第一次使用ajax,这不起作用。我不确定如何在数据标签上写出正确的值。如何获取userValuesChanged?或者具体的+ data.values.minv值?
答案 0 :(得分:2)
在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
中的其他值,也可以包含它们。)
每次滑块更改时都这样做可能会有点多。如果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
}
在保存值之前等待半秒,如果在半秒内出现新值,则取消保存。
答案 1 :(得分:0)
尝试
$.ajax({
type: "GET",
dataType: "json",
url: "test.php",
data: {userValuesChanged:userValuesChanged},
async: false,
success: function(data){
alert(data);
return true;
}
});
当您通过ajax
发送数据时,数据应该类似于{key : value}
格式