Пытаюсь понять jqgrid для jquery. Как изменить URL-адрес для моего вызова AJAX? - PullRequest
14 голосов
/ 31 июля 2009

У меня все работает из учебника, заменяя его моими данными, но это жестко запрограммированная ситуация. Например, в уроке, над которым я работаю, у меня есть:

jQuery(document).ready(function(){ 
  jQuery("#list").jqGrid({
    url:'http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc',
    datatype: 'xml',
    mtype: 'GET',
    colNames:['ProductID','title', 'description','price','tax','notes'],
    colModel :[ 
      {name:'invid', index:'invid', width:55}, 
      {name:'invdate', index:'invdate', width:90}, 
      {name:'amount', index:'amount', width:80, align:'right'}, 
      {name:'tax', index:'tax', width:80, align:'right'}, 
      {name:'total', index:'total', width:80, align:'right'}, 
      {name:'note', index:'note', width:150, sortable:false} ],
    pager: jQuery('#pager'),
    rowNum:10,
    rowList:[10,20,30],
    sortname: 'title',
    sortorder: "desc",
    viewrecords: true,
    imgpath: 'http://127.0.0.1/products/public/themes/basic/images',
    caption: 'Product List'
  }); 
}); 

Но URL-адрес жестко запрограммирован для получения данных. Учебник имеет:

jQuery(document).ready(function(){ 
  jQuery("#list").jqGrid({
    url:'example.php',
    datatype: 'xml',
    mtype: 'GET',
    colNames:['Inv No','Date', 'Amount','Tax','Total','Notes'],
    colModel :[ 
      {name:'invid', index:'invid', width:55}, 
      {name:'invdate', index:'invdate', width:90}, 
      {name:'amount', index:'amount', width:80, align:'right'}, 
      {name:'tax', index:'tax', width:80, align:'right'}, 
      {name:'total', index:'total', width:80, align:'right'}, 
      {name:'note', index:'note', width:150, sortable:false} ],
    pager: jQuery('#pager'),
    rowNum:10,
    rowList:[10,20,30],
    sortname: 'id',
    sortorder: "desc",
    viewrecords: true,
    imgpath: 'themes/basic/images',
    caption: 'My first grid'
  }); 
}); 

Очевидно, что данные в моей строке запроса изменятся, и я не всегда буду нуждаться в том же URL: http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc

И учебник с example.php нуждается в переменных строки запроса, чтобы он мог получить правильные данные, но они никогда не показывают ту часть, которую я могу найти. Так как мне изменить строку запроса? Как я могу отправлять товары динмически? Кроме того, кнопки пейджера отправляют такие вещи из-за жесткого кода URL:

http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc?page=2&rows=10&sidx=productname&sord=desc&nd=1248988261293&_search=false

Как я могу просто получить URL-адрес типа / test / правильных переменных? Как я могу изменить строку запроса?

Спасибо за любую помощь. Надеюсь, это не слишком очевидно. Я нашел setGridParam ({url: newvalue}) , но не понял, как его использовать.

Вот документация . Учебник находится в первой части, вверху.

РЕДАКТИРОВАТЬ: Спасибо за ниже. Я пытаюсь увидеть, как они используют setGridParam в своем уроке с example.php. У них просто есть example.php, и я не вижу, как они получили переменные строки запроса со страницы html на страницу example.php. setGridParam может быть правильным способом для достижения этой цели, но это не так, как в примере, поэтому я не могу понять, как они передали исходные переменные строки запроса.

Я знаю, что могу сделать это:

    function gridSearch()
    {
        $("#list").setGridParam(
            {

                  url:"http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc",
                page:1
            }
            ).trigger("reloadGrid");//Reload grid trigger
        return false
    }

<input id="sData" class="EditButton" type="submit" value="Search" onClick="return gridSearch()"/>

и что это перезагрузит сетку (я проверял это; это работает), но как они отправляли элементы в учебнике в первую очередь? Что если я не хочу перезагрузить кнопку, а просто передам переменные для первоначальной загрузки?

Ответы [ 3 ]

46 голосов
/ 31 июля 2009

После того, как вы создали свою сетку, вы можете создать URL, а затем указать его и вызвать перезагрузку сетки.

jQuery("#list").jqGrid().setGridParam({url : 'newUrl'}).trigger("reloadGrid")
2 голосов
/ 03 августа 2012

Вы можете попробовать это:

jQuery("#list")
    .jqGrid()
    .setGridParam({
        data:'xml',
        url : 'newUrl'
    })
    .trigger("reloadGrid");
1 голос
/ 05 июня 2014

Предположим, вы написали jqgrid-код js в функции js. Таким образом, в этом методе ваш URL-адрес передается динамически в переменной urlGetLst В коде jqgrid мы должны указать некоторые атрибуты:

url: urlGetLst,//(will be dynamic)
//and
loadonce: false

С этой опцией он будет каждый раз вызывать указанный URL и обновлять jqgrid свежими данными.

И перед вызовом функции загрузки jqgrid с помощью url вызовите / выполните код ниже

$("#jqgridtab").GridUnload();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...