في محاولة لفهم jqgrid ل jQuery. كيف يمكنني تغيير عنوان URL لمكالمة AJAX الخاصة بي؟

StackOverflow https://stackoverflow.com/questions/1209620

  •  06-07-2019
  •  | 
  •  

سؤال

لديّ كل شيء يعمل من البرنامج التعليمي ، واستبدله ببيبياتي ، لكنه موقف متشددين. على سبيل المثال ، في البرنامج التعليمي ، وهو ما أعمل عليه ، لدي:

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'
  }); 
}); 

من الواضح أن البيانات الموجودة في QueryString الخاصة بي ستتغير ولن أريد دائمًا عنوان URL نفسه لـ: http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc

ويحتاج البرنامج التعليمي مع مثال. فكيف يمكنني تغيير Querystring؟ كيف أرسل عناصر داين؟ أيضا ، ترسل أزرار النداء أشياء مثل هذا بسبب عنوان URL المتشددين:

http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc؟page=2&rows=10&sidx=productname&sord=desc&nd=1248888261293&search=search=

كيف يمكنني الحصول على عنوان URL مثل /اختبار /المتغيرات الصحيحة؟ كيف يمكنني تغيير Querystring؟

شكرا لك على أي مساعدة. آمل ألا يكون الأمر واضحًا جدًا. وجدت setGridparam ({url: newValue}) لكن لم يفهم كيفية استخدامه.

ها هو توثيق. البرنامج التعليمي في الجزء الأول ، أعلى.

تحرير: شكرا لأقل. أحاول أن أرى كيف يستخدمون setGridparam في البرنامج التعليمي الخاص بهم مع example.php. لديهم ببساطة مثال. قد يكون SetGridparam هو الطريقة الصحيحة لإنجاز هذا ولكن ليس من أين في المثال ، لذلك لا يمكنني معرفة كيفية اجتياز متغيرات QueryString الأولية.

أعلم أنه يمكنني القيام بذلك:

    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()"/>

وهذا سوف إعادة تحميل الشبكة (لقد اختبرتها ؛ إنها تعمل) ، ولكن كيف أرسلوا عناصر في البرنامج التعليمي في المقام الأول؟ ماذا لو كنت لا أريد إعادة تحميل زر ولكن فقط تمرير متغيرات حتى يتم تحميلها في البداية؟

هل كانت مفيدة؟

المحلول

بعد أن تقوم بإنشاء شبكتك ، يمكنك إنشاء عنوان URL ثم تحديد ذلك وتحريك الشبكة لإعادة التحميل.

jQuery("#list").jqGrid().setGridParam({url : 'newUrl'}).trigger("reloadGrid")

نصائح أخرى

يمكنك تجربة هذا:

jQuery("#list")
    .jqGrid()
    .setGridParam({
        data:'xml',
        url : 'newUrl'
    })
    .trigger("reloadGrid");

لنفترض أنك كتبت رمز JQGrid JS في وظيفة JS. لذلك في هذه الطريقة ، تمر عنوان URL الخاص بك ديناميكيًا في متغير urlgetlst في رمز JQGrid ، يتعين علينا تحديد بعض السمات:

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

مع هذا الخيار ، سوف يقوم في كل مرة بإجراء مكالمة إلى عنوان URL المحدد وتحديث JQGrid مع بيانات جديدة.

وقبل استدعاء وظيفة تحميل JQGrid مع عنوان URL الاتصال/تنفيذ الرمز أدناه

$("#jqgridtab").GridUnload();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top