JQuery AJAX проблема - PullRequest
       8

JQuery AJAX проблема

0 голосов
/ 21 сентября 2010

спасибо за каждую помощь, которую вы, ребята, оказали мне до сих пор !!: D

и теперь я сталкиваюсь с некоторыми проблемами при использовании jquery и ajax

Я извлекаю все фотографии моего пользователя из моей базы данных, вызываю их в сетку и затем применяю jqueryплагин pagination 'pajinate' с использованием этого кода

$(function(){
    $('#talent_paging').pajinate({
        num_page_links_to_display : 4,
        items_per_page : 15,
        nav_label_first : '«',
        nav_label_prev : '<',
        nav_label_next : '>',
        nav_label_last : '&raquo;'
    });
});

source: jquery.pajinate

страница о поиске с использованием определенного параметра, такого как: диапазон возраста, пол и ключевые слова, и я использую ajaxform для обработки отправки формы, используя этот код

$(function() { 
    var options = { 
        target:'#talent_paging',
    };
    $('#search_talent').ajaxForm(options); 
});

source: ajaxForm

, как вы бы догадались,Нумерация страниц хорошо работает при загрузке первой страницы, но как только я выполняю поиск, он не работает.Я действительно столкнулся с подобной проблемой, связанной с этим, когда я использовал jquery datatable и пытался манипулировать каждой строкой, на первой странице это работало хорошо, но на следующей странице это не помогло.

Я решил проблему с моей таблицей данныхиспользуя .delegate (), и я полагаю, что у этого есть та же проблема, я попытался несколькими способами добавить методы делегата в моей проблеме поиска по поиску страниц, но это были только испытания, не зная, что я на самом деле делаю (скопируйте эту вставку,: p) так как я не очень понимаю, как работает .delegate ()

, поэтому, пожалуйста, помогите мне с этими вопросами

делегат - лучший способ решить мою текущую проблему ??

, если это так, пожалуйста, помогите мне понять, как работает .delegate ()

спасибо

Ответы [ 2 ]

0 голосов
/ 21 сентября 2010

$().delegate() работает только с событиями, например, щелчками, наведением мыши, фокусами и т. Д. В Javascript существует понятие, называемое «всплывающее».Это означает, что, если вы явно не скажете иначе, каждое событие будет «пузыриться» вверх по дереву DOM и будет запускаться на каждом элементе дерева.Это означает, что вы можете использовать элемент общего предка, чтобы «перехватывать» все события определенного типа на дочерних элементах.

Это не будет работать, как я понимаю, на плагине pajinate, потому что он не используетСобытия.Я считаю, что он изменяет документ в момент вызова.

Вам нужно использовать функцию обратного вызова для вызова $('#talent_paging').pajinate() каждый раз, когда ajaxform завершил свою работу:

$(function() { 
    var options = {
        target:'#talent_paging',
        success: function() {
            $('#talent_paging').pajinate({
                num_page_links_to_display : 4,
                items_per_page : 15,
                nav_label_first : '&laquo;',
                nav_label_prev : '<',
                nav_label_next : '>',
                nav_label_last : '&raquo;'
            });
        }
    }

    $('#search_talent').ajaxForm(options); 
});

Примечаниечто этот код не очень хорош с точки зрения оптимизации, но это трудно сделать, не видя ваш базовый HTML.

0 голосов
/ 21 сентября 2010

Используете ли вы IE до IE8?Если так, то это может быть проблемой - у вас есть то, что раньше было синтаксической ошибкой (или, по крайней мере, двусмысленностью), но AFAIK только IE позаботится об этом:

$(function() { 
    var options = { 
        target:'#talent_paging', // <=== This comma is the error
    };
    $('#search_talent').ajaxForm(options); 
});

Грамматика для литералов объекта неДо недавнего времени явно разрешать запятую.SpiderMonkey (Firefox), V8 (Chrome) и все, что используют Safari и Opera, это не волнует, но до JScript 6 (IE8) JScript (IE) создает исключительную ситуацию для синтаксического анализа запятой, и ваш скрипт умирает.Подобное, но другое происходит, если вы делаете это с литералом массива:

var a = [1, 2, 3, 4, 5, ];

IE (JScript) создает массив с шестью (да, шестью) записями, последняя из которыхэто undefined.Это не является необоснованным, потому что нам всегда разрешалось иметь пустые записи (например, var a = [1, , 3];), и эти записи по умолчанию были undefined, но все остальные пошли другим путем и создали массив с пятью записями.

Недавняя 5-я редакция спецификации проясняет это (ууу!).Конечная запятая явно разрешена в литералах объекта (раздел 11.1.5) и литералах массива (раздел 11.1.4), а в случае литералов массива она не добавляет к длине массива (a.length выше - 5).

В последней версии IE10 , выпущенной , используется JScript 6, которая теперь позволяет использовать запятую для литералов объектов, но все еще имеет проблему с дополнительной записью вконец массива.Надеюсь, теперь, когда ECMAScript 5 прибил это, следующая версия JScript от Microsoft изменит это, хотя продавать их будет труднее ...

...