2009-06-23 13 views
6

मैं एक " 'Sys' अपरिभाषित है Microsoft JScript रनटाइम त्रुटि" हो रही है है। AJAX कॉल आंशिक दृश्य से बना है जो एक से अधिक पृष्ठों में एम्बेड किया गया है। यह एक को छोड़कर सभी पृष्ठों पर ठीक काम करता है। मैंने web.config फ़ाइल सेटिंग्स और .axd मैपिंग को संभावित समाधान के रूप में इंगित करने वाली पोस्ट पढ़ी हैं, लेकिन एप्लिकेशन web.config में सही तरीके से कॉन्फ़िगर किया गया है, और .axd मैपिंग IIS में भी सही हैं। इसके अलावा यह उन सभी पृष्ठों पर ठीक काम करता है जो इस आंशिक दृश्य का उपयोग करते हैं। यह एजेक्स पुस्तकालयों की तरह अभिनय कर रहा है इस पृष्ठ के लिए लोड नहीं हो रहा है।ASP.NET MVC AJAX Sys अपरिभाषित त्रुटि

स्क्रिप्ट फ़ाइलें के लिए संदर्भ साझा site.master फ़ाइल में हैं। सभी पृष्ठ, जिनमें से कोई काम नहीं करता है, उसी मास्टरपेज का संदर्भ लें।

कोई विचार? मैं इस पर दो दिनों से काम कर रहा हूं। धन्यवाद।

संपादित करें: के रूप में सैम नीचे ने कहा, यह प्रतीत होता है से पहले AJAX पुस्तकालयों लोड करने के लिए एक मौका है की तरह AJAX कॉल फायरिंग कर रहा है। लेकिन, AJAX कॉल पृष्ठ के प्रस्तुत होने के बाद लंबे समय तक सबमिट बटन द्वारा ट्रिगर किया जाता है, इसलिए AJAX पुस्तकालयों में लोड करने में काफी समय होता है - पहली बार पर्याप्त जानकारी न देने के लिए खेद है।

उत्तर

3

फ़ायरफ़ॉक्स में पृष्ठ लोड करें, फिर पेज का निरीक्षण करने के लिए फ़ायरबग का उपयोग करें - आप लोड की गई सभी व्यक्तिगत स्क्रिप्ट्स, साथ ही जारी किए गए सभी नेटवर्क अनुरोधों को देख पाएंगे, और चाहे वे सफल हों या नहीं। सर्वर परिप्रेक्ष्य से समस्या निवारण करने का प्रयास करने से यह बेहतर है।

आप IE8 का उपयोग कर रहे हैं, तो आप डेवलपर उपकरण विंडो का उपयोग कर सकते हैं, लेकिन मुझे लगता है Firebug बेहतर है - दोनों उपकरणों जावास्क्रिप्ट डीबगिंग का समर्थन हालांकि।

सबसे संभावित समस्या यह है कि आप अपने आंशिक दृश्य में स्क्रिप्ट चला रहे हैं, इससे पहले कि यह निर्भर हो सके कि स्क्रिप्ट्स को लोड करने का मौका मिला है - सुनिश्चित करें कि आपके आंशिक दृश्य के अंदर आपके पास कोई स्क्रिप्ट कॉल केवल पृष्ठ के बाद ही चलती है लोड हो गया है, और लोडिंग के दौरान तुरंत नहीं।

+0

@ सैम - मैं पहले से ही फायरबग के साथ एक नज़र डाला और स्क्रिप्ट टैब पर क्लिक करते समय अजाक्स पुस्तकालयों को लोड कर सकते हैं। मैं फ़ायरबग से परिचित नहीं हूं, हालांकि, मुझे कुछ याद आ रहा है। मैंने फिडलर का बहुत उपयोग किया है, इसलिए जब मैं स्क्रिप्ट के लिए कॉल को सत्यापित करने के लिए कार्यालय में जाता हूं तो मैं कल इसके साथ एक नज़र डालता हूं। चूंकि पेज के प्रस्तुत होने के बाद लंबे समय से सबमिट बटन से AJAX कॉल ट्रिगर किया गया है, इसलिए मैं यह कहूंगा कि स्क्रिप्ट को लोड करने का मौका नहीं मिला है। धन्यवाद। – cnaegle

+0

@ सैम - आज सुबह फिडलर के साथ एक नज़र डाली और अनुमान लगाया क्या? स्क्रिप्ट फ़ाइल का पथ केवल उस पृष्ठ के लिए गलत है। अभी तक क्यों नहीं पता, लेकिन जब मैं स्क्रिप्ट के लिए पूरी तरह से योग्य पथ डालता हूं, तो पृष्ठ पूरी तरह से काम करता है। धन्यवाद, मैं आपके उत्तर को सही के रूप में चिह्नित कर रहा हूं क्योंकि यह मुझे सही पथ से नीचे भेजता है - एक उपकरण का उपयोग करके मुझे बताया होगा कि मुझे दो दिन पहले क्या पता होना चाहिए :) – cnaegle

0

खंड में web.cofig में जोड़ें:

<remove verb="*" path="*.asmx"/> 

<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 

<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 

<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/> 

<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 

+0

ऊपर बताए अनुसार, web.config फ़ाइल सही तरीके से कॉन्फ़िगर की गई है। – cnaegle

16

शायद ज़रुरत पड़े ... का उपयोग पथ से बचने के लिए निम्नलिखित मुद्दे

<script src="<%= Url.Content("~/Scripts/MicrosoftAjax.debug.js") %>" 
    type="text/javascript"></script> 
<script src="<%= Url.Content("~/Scripts/MicrosoftMvcAjax.debug.js") %>" 
    type="text/javascript"></script> 

स्रोत: http://msdn.microsoft.com/en-us/library/dd381533.aspx

धन्यवाद, आर्टि

+1

ऐसा पहली बात है जो लोगों को जांचनी चाहिए - चाहे वे MicrosoftAjax.js और MicrosoftMvcAjax.js फ़ाइलें –

+0

अच्छी तरह से शामिल हों। यह –

0
सैम के प्रति आपकी प्रतिक्रिया के बारे में

, एक बात मैं MVC क्षुधा का एक बहुत में देखा है कि लोगों को कैसे निपटने के लिए पता नहीं है है सापेक्ष पथ और एप्लिकेशन/रनटाइम की अस्पष्टता के साथ। उदाहरण के लिए, यूआरएल काफी गारंटी देता है पुनर्लेखन है कि एक विशेष पेज विभिन्न गहराईयों से आप प्रत्याशित साथ दिखाया जा सकता है, तो ../../images आप /products/widget या /products/widget/12345 पर देख रहे हैं, इस आधार पर कहीं और इंगित करेगा, भले ही दृश्य वही हो सकता है।जैसा कि आरटी ने बताया, इस से निपटने का सबसे अच्छा तरीका यह है कि इंजन यूआरएल उपयोगिता और एप्लिकेशन-रिश्तेदार पथों का उपयोग करके आपके लिए काम करने दें ताकि संदर्भ के बावजूद आवेदन द्वारा तय किया जा सके।

0

मुझे यह भी पता चला है कि एएसपी.नेट एमवीसी 2 के साथ निम्नलिखित कार्यों का उपयोग करना।

इसके बजाय MicrosoftMvcAjax.js का उपयोग करने का

, आप MicrosoftMvcValidation.js

आशा का उपयोग इस कोई मदद करता है।

2

सभी उपरोक्त मामले ठीक हैं। लेकिन कभी-कभी डेवलपर AJAX के लिए जावास्क्रिप्ट फ़ाइलों को जोड़ना भूल जाता है। इसलिए कृपया इसे भी देखें।

16

web.config में appsettings टैग के तहत निम्न कोड पंक्ति जोड़ें:

<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
+0

काम कर रहा है किसी कारण से माइक्रोसॉफ्ट Unobtrusive अजाक्स के लिए nuget पैकेज स्थापित करने के लिए यह मेरे वेब में जोड़ा नहीं गया था। कॉनफिग। पारितोषिक के लिए धन्यवाद। – coryrwest

+1

यह था! इस पर सभी सुबह बिताएं .. –

+0

सबसे आम त्रुटि। धन्यवाद! – mihkov

0

असल में तुम्हारी याद आ रही हो सकता है: MicrosoftMvcAjax., MicrosoftMvcValidation.debug और MicrosoftMvcValidation जे एस फ़ाइल संदर्भ।

करें नीचे दिए गए चरणों:

bundles.Add(new ScriptBundle("~/bundles/mvcFoolProof") 
     .Include("~/Scripts/MicrosoftAjax*", 
       "~/Scripts/MicrosoftMvcAjax*", 
       "~/Scripts/MicrosoftMvcValidation*", 
       "~/Scripts/mvcfoolproof*", 
       "~/Scripts/MvcFoolproofJQueryValidation*", 
       "~/Scripts/MvcFoolproofValidation*")); 
01:

  1. PM> Install-Package MicrosoftAjax

  2. PM> Install-Package MicrosoftMvcAjax.Mvc5

  3. नीचे की तरह bundleconfig में उन्हें शामिल करें

    अब इसे किसी भी त्रुटि के बिना काम करना चाहिए।