проверка jquery и jqgrid на одной странице

#jquery #jqgrid #validation

#jquery #jqgrid #проверка

Вопрос:

Я использую jqgrid и плагин jquery validate на одной странице, но когда я включаю плагин validate, jqgrid не может загрузить данные json. Когда я удаляю плагин validate, он начинает работать отлично. Я получаю следующую ошибку.

Недопустимая строка метки: 0, столбец: 1 Исходный код: {«страница»:»1″

Комментарии:

1. Вы должны дополнить свой вопрос HTML-кодом и JavaScript-кодом, которые могут быть использованы для воспроизведения проблемы. Как jqGrid, так и jQuery. Validate.js могут сосуществовать. Вы должны включить информацию о версиях jQuery, jqGrid и jQuery validate, которые вы используете.

Ответ №1:

Я мог бы воспроизвести вашу проблему с помощью jQuery Validate 1.7. Я мог бы предложить очень простое решение: прокомментировать следующие строки jQuery.Validate.js:

 // ajax mode: abort
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() 
;(function($) {
    var ajax = $.ajax;
    var pendingRequests = {};
    $.ajax = function(settings) {
        // create settings for compatibility with ajaxSetup
        settings = $.extend(settings, $.extend({}, $.ajaxSettings, settings));
        var port = settings.port;
        if (settings.mode == "abort") {
            if ( pendingRequests[port] ) {
                pendingRequests[port].abort();
            }
            return (pendingRequests[port] = ajax.apply(this, arguments));
        }
        return ajax.apply(this, arguments);
    };
})(jQuery);
  

Если вы используете последнюю версию jQuery 1.8.Проверка (вы можете скачать ее здесь), похоже, никаких проблем не существует.

Комментарии:

1. Я думаю, что это вернулось в 1.8.1 jQuery. Проверка …!

2. @Sai Krishna: Я это не тестировал, но мне кажется, что код закрытия существует в версиях 1.8.1 и 1.9.0, только если вы будете использовать какую-нибудь «ретро» версию jQuery. Начиная с jQuery 1.5, существует метод jQuery.ajaxPrefilter , и jQuery Validate 1.8.1 и 1.9.0 используют его вместо перезаписи $.ajax .