سؤال

أحاول إضافة مرجع برنامج نصي إلى jQuery في صفحتي الرئيسية حتى يعمل مع أي صفحة.يبدو حاليا مثل هذا

<script type="text/javascript" src="jquery.js"></script>

تكمن المشكلة في أن المسار يرتبط دائمًا بصفحة aspx المنفذة، لذا لن يعمل هذا إلا إذا كان الملف "jquery.js" موجودًا في نفس المجلد.لجعله يعمل لا بد لي من تغيير الخط إلى:

<script type="text/javascript" src="../../jquery.js"></script>

من الواضح أن هذا أقل من المثالي لأنه سيعمل فقط مع الصفحات التي تكون على مستويين عميقين من المجلد الجذر.إذا حاولت القيام بما يلي، فسيقوم IIS بطرح خطأ حول شخصية غير متوقعة.

<script runat="server" type="text/javascript" src="~/jquery.js"></script>

أيه أفكار؟

يحرر: لقد نسيت أن أذكر أيضًا أن البرنامج النصي يجب أن يكون في علامة الرأس

الإجابة العليا الحالية تطرح "فشل تحميل إطار عمل ASP.NET Ajax من جانب العميل."خطأ عندما أقوم بإضافته إلى صفحتي الرئيسية.تم إلقاؤها من جافا سكريبت وليس من مترجم .Net.إذا قمت بنقل ScriptManager إلى قسم الرأس حيث ينبغي أن يكون، فسوف أحصل على خطأ في الترجمة حول ضرورة وجود ScriptManager داخل علامة النموذج.

الجواب الثالث يرمي "أحرف غير قانونية في المسار."استثناء من المترجم

تحرير 2: عندما أقوم بإضافة هذا السطر إلى علامة الرأس الخاصة بي، أحصل على هذا الخطأ من IIS.

لا يمكن تعديل مجموعة عناصر التحكم لأن عنصر التحكم يحتوي على كتل تعليمات برمجية (أي:<%...%>)

تم حلها: أخذت الرد المعدل من الإجابة أدناه ووضعته داخل ملف asp:ContentPlaceHolder عنصر

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

المحلول

يمكنك استخدام أ ScriptManager:

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/jquery.js" />
    </Scripts>
</asp:ScriptManager>

يحرر: اذا أنت قطعاً تحتاج هذا في الخاص بك <head> القسم، يمكنك أن تفعل شيئا مثل:

<head>
    <script type="text/javascript" 
        src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>

تحرير 2: وفقا للتعليقات، إذا كنت تلاحظ ذلك

لا يمكن تعديل مجموعة عناصر التحكم لأن عنصر التحكم يحتوي على كتل تعليمات برمجية (أي:<%...%>)

قد تحتاج إلى تغيير ما ورد أعلاه لاستخدام صيغة ربط البيانات:

<head>
    <script type="text/javascript" 
        src="<%# Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>

نصائح أخرى

يحاول <%# بدلاً من <%= في الصفحة الرئيسية تحت قسم الرأس

<script type="text/javascript" 
        src="<%# ResolveUrl("~/YourScriptFolder/YourJQueryOrJavascript.js") %>">
</script>

ثم في الكود خلف الصفحة الرئيسية تحت Page_Load حدث

Page.Header.DataBind();

أنت الآن جاهز لاستخدام إما jQuery وJavaScript بالإضافة إلى CSS، فقط تحتاج إلى تغيير المسار الخاص بك ResolveUrl الملف الذي تريد التعامل معه CSS، JavaScript، jQuery.

إذا كنت لا تريد استخدام asp:ScriptManager أو المسارات المطلقة، فيمكنك القيام بذلك على النحو التالي:

<script runat="server" type="text/javascript" 
  src='<%= Page.ResolveUrl("~/jquery.js") %>'></script>

ولا أعلم هل وجدتم الحل لمشكلتكم أم لا.كنت أواجه نفس المشكلة وأحاول معرفة سبب ظهور الخطأ "jQuery غير محدد" في المكونات الإضافية التي أستخدمها.لقد جربت جميع الحلول التي حصلت عليها من الإنترنت ولكن لم يحالفني الحظ على الإطلاق.

ولكن فجأة خطر في ذهني شيء قد يكون ملفات البرامج النصية يجب أن تكون سليمة.لذلك، قمت بنقل مرجع jquery إلى المركز الأول وبدأ كل شيء يعمل مثل السحر.

تذكروا يا رفاق، إذا كنتم تستخدمون أي مكونات إضافية مع jquery، فتأكدوا من استخدام الترتيب التالي لإعداد مرجع لتلك الحقول.

  1. الرجوع إلى مكتبة jquery
  2. إشارة إلى مكتبات المكونات الإضافية اللاحقة وما إلى ذلك ...

على سبيل المثال:

  1. "البرنامج النصي src = "js/jquery-1.3.2.min.js" نوع = "نص/جافا سكريبت"...
  2. "البرنامج النصي src = "js/jqDnR.min.js" نوع = "نص/جافا سكريبت"...
  3. "البرنامج النصي src = "js/jquery.jqpopup.min.js" نوع = "نص/جافا سكريبت"...
  4. "البرنامج النصي src = "js/jquery.bgiframe.min.js" نوع = "نص/جافا سكريبت"...

تأكد دائمًا من ضرورة وضع مرجع jquery أولاً ثم المكتبات اللاحقة.

نأمل أن يحل هذا مشكلتك خاصة عند استخدامك مع MasterPages.من الغريب جدًا أنه يعمل بغض النظر عن الترتيب الذي تستخدمه عندما لا تستخدم MasterPages، ولكن عندما تفعل ذلك، فإنه بطريقة ما يتطلب الترتيب الصحيح.

حظا سعيدا والترميز سعيد ،

فنسنت ديسوزا

ينظر الى كيفية تشغيل الجذر "/".هذا يجب أن يحل جميع مشكلاتك المتعلقة التي لم يتم حلها .js مسارات الملفات.تقوم بشكل أساسي بإعادة تكوين خادم VS Dev لتشغيل التطبيق الخاص بك localhost:port/ على عكس العادية localhost:port/application name/ جعل تحليل الاسم يعمل بنفس الطريقة التي يعمل بها على IIS.

<script type="text/javascript" src="/full/path/to/jquery.js"></script>

إذا انتقلت علامة البرنامج النصي هذه مباشرة إلى المتصفح، فمن غير المرجح أن تتمكن من استبدال جذر موقعك هناك.على الأقل ليس على الخادم.لذلك يمكنك:

  1. نشر الموقع على جذر اسم المجال واستخدام المسارات المطلقة (أبسط حل).
  2. أدخل هذا الرابط مع التحكم في الخادم.
  3. المعالجة المسبقة الناتجة عن HTML قبل إرسالها إلى العميل (مع httpresponse.filter).

يمكنك أيضًا استخدام علامة HTML <base>:

<base href="http://www.domain.com"></base>  

ومن ثم تكون جميع الروابط الموجودة في قسم الرأس مرتبطة بالعنوان الأساسي:

<script type="text/javascript" src="scripts/jquery.js"></script>

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

<body>
<script language="javascript" src='<%= this.ResolveClientUrl("~/full/path/to/jquery.js") %>' type="text/javascript"></script>
</body>

للحصول على المسار المطلق للملف لأي صفحة استخدمه كما يلي:

<script type="text/javascript" src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script> 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top