jqGrid "رابط" المعلمة تسبب أخطاء في صفحات في عناوين URL أعمق

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

سؤال

وأنا أحاول أن نشر موقع ASP.NET MVC إلى ويندوز 2003، الملقم IIS 6.0 مع الإطار 3.5 تثبيت (ولكن ليس ASP.NET MVC - انها مجرد في المجلد بن). الموقع يجعل من استخدام jqGrid، ولكن على النشر ملقم الشبكة هو الفشل في بعض الحالات.

وصفحة رئيسية في موقع على شبكة الإنترنت هي في /Views/Shared/Site.Master. لديها علامة النصي لتشمل جافا سكريبت لتهيئة وتحميل jqGrid.

ولقد وجدت أنني عندما نشرت، لا جافا سكريبت "/" ولا ASP "~" القسري المسار إلى ملفات البرامج النصية إلى مسارات مطلقة. كنت بحاجة إلى إضافة بعض رمز لضمان والمسار الكامل:

<script type="text/javascript" src=<%= VirtualPathUtility.ToAbsolute("~/Scripts/searchControls.js") %> ></script>

وURL في jqGrid تهيئة وظيفة يتضمن المسار إلى طريقة تحكم للحصول على البيانات الأولية، مثل هذا:

jQuery("#searchResultList").jqGrid({
        url: './Report.mvc/GetResultsL2E/',
        datatype: 'json',
        mtype: 'GET',
        colNames: ['', 'ID', 'Title', 'Post_Date', 'Start_Date', 'End_Date', 'Summary', 'Categories', 'Affected Places'],
    colModel: [
      { name: 'act', index: 'act', width: 75, sortable: false },
      { name: 'ID', index: 'ID', width: 40, align: 'left', hidden: true },
      { name: 'Title', index: 'Title', width: 150, align: 'left' },
      { name: 'Post_Date', index: 'Post_Date', width: 80, align: 'left' }, //, formatter: 'date' },
      { name: 'Start_Date', index: 'Start_Date', width: 80, align: 'left' }, //, formatter: 'date' },
      { name: 'End_Date', index: 'End_Date', width: 80, align: 'left' }, //, formatter: 'date' },
      { name: 'Summary', index: 'Summary', width: 240, align: 'left' },
      { name: 'Categories', index: 'Categories', width: 140, align: 'left' },
      { name: 'Affected Places', index: 'AffectedPlaces', width: 140, align: 'left' }
    ],
    pager: jQuery('#searchResultPager'),
    rowNum: 10,
    rowList: [5, 10, 20, 50],
    sortname: 'Title',
    sortorder: 'asc',
    imgpath: './Scripts/jqGrid/themes/green/images',
    caption: 'Report Search Results',
    editurl: './Report.mvc/Edit/',
    height: 'auto',
    multiselect: true,
    multiboxonly: true, //adds check box column
    viewrecords: true,
    recordtext: ' Reports',
    pgtext: ' of ',
    altRows: true,
    loadComplete: function() {
        var ids = jQuery("#searchResultList").getDataIDs();
        for (var i = 0; i < ids.length; i++) {
            var cl = ids[i];
            be = "<a href='./Report.mvc/Edit/" + cl + "' title='Edit'><img src='./Content/Images/Icons/Edit.png' border='0' alt='Edit' /></a>";
            se = "<a href='./Report.mvc/Details/" + cl + "' title='View'><img src='./Content/Images/Icons/view.png' border='0' alt='View' /></a>";
            ce = "<a href='./Report.mvc/Delete/" + cl + "' title='Delete'><img src='./Content/Images/Icons/delete.png' border='0' alt='Delete' /></a>";
            jQuery("#searchResultList").setRowData(ids[i], { act: be + se + ce })
        }
    }
}).navGrid('#searchResultPager',
{ edit: false, add: false, del: false, search: false }, //options 
{ height: 280, reloadAfterSubmit: false }, // edit options 
{ height: 280, reloadAfterSubmit: false }, // add options 
{ reloadAfterSubmit: false }, // del options 
{} // search options 
);

ولقد وجدت أيضا أنه كان على إضافة نقطة لجعل هذا العمل على ملقم IIS 6، ولكنه عمل.

والمشكلة هي أن لدي ارتباطات في العمود "عمل" للانتقال إلى صفحة تحرير. يستخدم صفحة تعديل صفحة رئيسية واحدة، وبالتالي فإن نفس البرامج النصية. ومع ذلك، فإن URL للصفحة هو /MyWebApp/Report.mvc/Edit/# (حيث # هو معرف من التقرير إلى تحرير). وسوف jqGrid لا التهيئة.

في وحدة الحرائق أرى الخطأ:

jQuery("#searchResultList").jqGrid is not a function

           loadComplete: function() {\r\n

والذي أنا متأكد من هو زائف، لأن الاختلاف الوحيد الذي أستطيع أن أراه هو أن URL هو الآن مستوى واحد أعمق (/Report.mvc/Edit مقابل /Report.mvc).

وهناك عدد من الأشياء الغريبة على هذه الشبكة وكمقاول لدي أي سيطرة عليها، وليس أكثر من ذلك بكثير السيطرة على الخادم.

وأنا أفكر هذه مشكلة مع معالجة jqGrid من عنوان URL، لأنني حاولت تعيين المعلمة رابط إلى القيم التالية:

http://server_name/MyWebApp/Report.mvc/GetResultsL2E/  and
/MyWebApp/Report.mvc/GetResultsL2E/

وكلا أخطاء السيناريو الذي أثير حول كل الصفحات، مشيرا إلى s.data أو s.url أنها ليست وظيفة في البرنامج النصي jQuery.js.

هل هناك أي تلميحات حول كيفية جعل هذا العمل في بيئة النشر الخاص بي؟

وUPDATE: أنا منذ فترة طويلة عملت تغلب على هذه المشكلة، ولكن الآن أجد أن خادم الاختبار الذي تمت زيارتها هذه المراوغات غريبة غير ملقم ظاهري. أنا أبحث لمعرفة ما إذا كان لديها أي تأثير على هذه وغيرها من القضايا على هذه الشبكة معينة.

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

المحلول

و"jqGrid ليس وظيفة يعني أنه لم يتم تحميل الملف grid.base.js، وهو ما يعني jQuery.jqGrid.js إما لم يتم تحميل قبل دعوة ل.jqGrid أو فشل. نظرة على لوحة صافي في الحرائق. grid.base.js <م> يجب الحمل قبل هذه الدعوة.

وانها ليست معالجة URL في الشبكة، لأنه لم يكن لديك شبكة بعد إذا كنت ترى هذا الخطأ.

نصائح أخرى

لديك لتحرير هذا الملف: JQuery.JQGrid.js.

والبحث عن هذا الإعلان (الخط 3): var pathtojsfiles = "js/"; // need to be adjusted

وتغيير المسار من "شبيبة /" لأيا كان المسار هو jqGrid الخاص بك جافا سكريبت الملفات.

ولقد غيرت ل: var pathtojsfiles = "jqgrid/js/";
وأنه يعمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top