jQuery get () метод - не уверен, что он делает с параметрами, которые он получает в этом примере - PullRequest
0 голосов
/ 02 июля 2010

Я прочитал с веб-сайта jQuery, что get () загружает данные с сервера, используя HTTP-запрос GET.Но этого объяснения недостаточно, например, для приведенного ниже примера:

Просто для того, чтобы дать некоторый контекст для моего вопроса, когда мы присваиваем значение двух параметров переменной expoptions:

var expoptions = $.extend(defaults, options);

Параметр defaults является литералом объекта из пар ключ / значение по умолчанию, которые не определены в параметре options:

$.fn.explorerGrid = function(options) {
var defaults = {
    order: 'make',
    page: 1,
    id: 0,
    per_page: 20,
    url: "/honda",
    additional: function(){return {ololo:'trololo'};},
};

Параметр options является литералом объекта пар ключ / значение, переданных какпараметр при вызове метода explorerGrid ():

Honda.prototype.explorer_create=function(){
var component = this;
this.opts_exp = {
    order: this.default_order_str,
    url: "/"+this.resource_url_str,
    additional: function(){return component.filter_func();}
};
jQuery(this.exp_id).explorerGrid(this.opts_exp); //exp_id is just a  div container that holds a table we intend to populate with data

Затем мы перебираем литералы объекта нашего Honda, присваивая per_page (например, 20), order (например, 'make'), page (например, 1) изнаши expoptions возражают против некоторых глобальных переменных:

return this.each(function() {
var expobj = $(this);
var params = {
    per_page: expoptions.per_page,
    order   : expoptions.order,
    page    : expoptions.page,
};

---- часть, которую я не понимаю ---- когда мы вызываем метод get (), мы передаем некоторые аргументы, один - expoptions.url (например, '/ honda'), params (который содержит объектный литерал пар ключ / значение, которые определяют, как мы хотим заполнить таблицу, и он также содержит другой литерал объекта из дополнительного () метod, который содержит пары ключ / значение отфильтрованных критериев, таких как: 'Year: 2008', 'Make: Honda'), а затем мы вызываем функцию, которая выглядит как анонимная функция, передавая параметр с именем data, которыйЯ не уверен, откуда это исходит, потому что, как я уже сказал, эта функция, кажется, нигде не определена, а затем она вызывает метод html () для объекта expobj, который является нашим объектом, таким как Honda, ив этом параметре данных. Я не уверен, что метод get () должен делать с этими тремя параметрами: expoptions.url, params, function (data).Если кто-нибудь знает, что делает метод get () с этими параметрами, я хотел бы получить некоторые пояснения:

jQuery.get(expoptions.url,
params,
function(data)
{
    expobj.html(data);


    expobj.find("tr th.sortable").click(function(){
        if($(this).hasClass('sortedasc')){
            expoptions.order = "-" + $(this).attr('id');}

        if($(this).hasClass('sorteddesc')){
            expoptions.order = $(this).attr('id');}

        if(!$(this).hasClass('sorteddesc') && !$(this).hasClass('sortedasc')) {
            expoptions.order = $(this).attr('id');}
        expoptions.find_page_for_resource = 0;
        expobj.explorerGrid(expoptions);
    });

    expobj.find("#gridpage").change(function(){
        expoptions.page = 1;
        expoptions.per_page = $(this).val();
        expobj.explorerGrid(expoptions);
    });

);

Спасибо за любой ответ.

Ответы [ 2 ]

1 голос
/ 02 июля 2010

Проще говоря, третий аргумент .get, анонимная функция, которая начинается с

function(data)
{
    expobj.html(data);

вызывается браузером после завершения HTTP-запроса GET и вызывается с телом ответа, отсюда и параметр data.

expoptions.url сообщает ему, откуда получить данные, а второй аргумент используется для построения "строки запроса", "? Foo = bar & this = that".

0 голосов
/ 02 июля 2010

3 параметра, которые принимает .get(), используются для 1. URL, который вы получаете. 2. параметры, которые вы хотите отправить на URL. 3. функция, которую вы хотите запустить после завершения загрузки страницы, которую вы получаете

В функцию передаются 3 параметра, результирующие данные вашего вызова, текстовое состояние выполненного вами вызова и объект запроса XMLHttpRequest, например, function(data, textStatus, XMLHttpRequest);

Функция, которую вы пишете, должна иметь data, если вы перенастраиваете данные с URL-адресом, по которому вы звоните, .get().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...