试试加个时间参数~
function VerUserName()
 {
    function sparam(param)
    {
        return $("#txtUserName").val().trim();
    }; 
     
    var param =
            {
                onRequest: sparam,
                t: (new Date()).getTime()
            }
 
            return param;

解决方案 »

  1.   


    谢谢你的回答,这样是没有用的,因为除了第一次执行这个方法,后面都不会在执行这个方法了。所以在里面加什么都没有用。似乎类型缓存了一样,但是要如何修改jquery.validate 又不知道怎么改。我修改的地方只是对remote 里面数据源封装进行了增加,不会对齐试用有任何影响
      

  2.   

    ~~那你试试$.ajaxSetup({
    cache:false
    });
      

  3.   

    加入在ajax里面试了下,没有用哦
      

  4.   

    ~~不用加在$.ajax里面啊,这个是ajax的全局设置
    如果这样不行的话估计不是缓存的问题了
      

  5.   


    并非ajax缓存,应该类似数据缓存把,将第一次执行的数据用$.data()存储好,然后第二次就读取调用。
    我也不清楚
      

  6.   

    ???你贴出来的代码里哪里有$.data()???
      

  7.   

     jquery.validate 里面的东西,代码很多,我只是看了下,有些没看懂。这个框架封装了很多东西
    下面贴一段出来,有很多。这个有贴不完。哎!
     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";
                }
      

  8.   

    。你要改jquery.validate的源码啊?这个不是好习惯哦
    而且这个代码里面的data和$.data根本就不是一回事。
    这个代码里面的data就是你参数传过来的data..而且param.url = "../AjaxServerPage/ServletHandler.ashx";你把url写死了啊。。
    还是说这个是你的测试代码?
      

  9.   


    地址的话,估计就是那些写死了,高手有何指教。所有的异步提交都是交由一个固定的页面统一处理我相信应该能够写死把。
    ----------------------------------------------------------
    然后关于修改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";
                    }
      

  10.   

    每次验证后调用这个就行了if($.data(document.getElementById("txtUserName"), "previousValue"))
    {
    $.data(document.getElementById("txtUserName"), "previousValue").old = null; 
    }
      

  11.   

    只执行一次的原因很好解决,只需要在url加入一个日期参数例如 var url = "方法名?date="+new Date()