试试加个时间参数~
function VerUserName()
{
function sparam(param)
{
return $("#txtUserName").val().trim();
};
var param =
{
onRequest: sparam,
t: (new Date()).getTime()
}
return param;
}
function VerUserName()
{
function sparam(param)
{
return $("#txtUserName").val().trim();
};
var param =
{
onRequest: sparam,
t: (new Date()).getTime()
}
return param;
}
谢谢你的回答,这样是没有用的,因为除了第一次执行这个方法,后面都不会在执行这个方法了。所以在里面加什么都没有用。似乎类型缓存了一样,但是要如何修改jquery.validate 又不知道怎么改。我修改的地方只是对remote 里面数据源封装进行了增加,不会对齐试用有任何影响
cache:false
});
如果这样不行的话估计不是缓存的问题了
并非ajax缓存,应该类似数据缓存把,将第一次执行的数据用$.data()存储好,然后第二次就读取调用。
我也不清楚
下面贴一段出来,有很多。这个有贴不完。哎!
remote: function(value, element, param) {
if (this.optional(element))
return "dependency-mismatch"; var previous = this.previousValue(element);
if (!this.settings.messages[element.name])
this.settings.messages[element.name] = {};
previous.originalMessage = this.settings.messages[element.name].remote;
this.settings.messages[element.name].remote = previous.message; param = typeof param == "string" && { url: param} || param; if (this.pending[element.name]) {
return "pending";
}
if (previous.old === value) {
return previous.valid;
} previous.old = value;
var validator = this;
this.startRequest(element);
var data = {};
data[element.name] = value; //--------------------------begin-----------------
//增加对param方法的封装
if (param.data != undefined && jQuery.isFunction(param.data)) {
param.data = $.validator.methods.serializeRequest(param.data());
param.url = "../AjaxServerPage/ServletHandler.ashx";
}
//-------------------------end--------------------
$.ajaxSetup({ cache: false });
$.ajax($.extend(true, {
url: param,
mode: "abort",
port: "validate" + element.name,
dataType: "json",
type: "post",
data: data,
success: function(response) {
validator.settings.messages[element.name].remote = previous.originalMessage;
//修改返回response---》response.Result
var valid = response.Result === true;
if (valid) {
var submitted = validator.formSubmitted;
validator.prepareElement(element);
validator.formSubmitted = submitted;
validator.successList.push(element);
validator.showErrors();
} else {
var errors = {};
//修改返回response---》response.Result
var message = response.Result || validator.defaultMessage(element, "remote");
errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
validator.showErrors(errors);
}
previous.valid = valid;
validator.stopRequest(element, valid);
}
}, param));
return "pending";
}
而且这个代码里面的data和$.data根本就不是一回事。
这个代码里面的data就是你参数传过来的data..而且param.url = "../AjaxServerPage/ServletHandler.ashx";你把url写死了啊。。
还是说这个是你的测试代码?
地址的话,估计就是那些写死了,高手有何指教。所有的异步提交都是交由一个固定的页面统一处理我相信应该能够写死把。
----------------------------------------------------------
然后关于修改jquery.validate的源码那也是么有办法的事情,用了这个插件现在不能满足我的要求我也只有修改他了。
----------------------------------------------------------------------------
至于直接终于让我找出来了。虽然不太明白但是总算弄出来了。 var maxparam = {};
//--------------------------begin-----------------
//增加对param方法的封装
if (param.data != undefined && jQuery.isFunction(param.data))
{
//这里我会将数据转换成json格式那么就是字符串类型,
// 程序调用的时候就是字符串。所以老是第一次获取的值,
//申明新的对象,不对param.data进行修改那么可以试用了。。
maxparam.data = $.validator.methods.serializeRequest(param.data());
maxparam.url = "../AjaxServerPage/ServletHandler.ashx";
}
{
$.data(document.getElementById("txtUserName"), "previousValue").old = null;
}