2013-07-16 21 views
9

Gerçekten basit bir kalıcı iletişim kutusu çalışması yapmak istiyorum. Ben sonuna bunu çalıştırdığınızda Ancak0x800a1391 - JavaScript çalışma zamanı hatası: 'jQuery' undefined - MVC 4

@section featured { 
<section class="featured"> 
    <div class="content-wrapper"> 
     <hgroup class="title"> 
      <h1>@ViewBag.Title.</h1> 
      <h2>@ViewBag.Message</h2> 
     </hgroup> 
     <script type="text/javascript"> 
      $("#dialog-form").dialog({ 
       autoOpen: false, 
       height: 300, 
       width: 350, 
       modal: true, 
       buttons: { 

        Cancel: function() { 
         $(this).dialog("close"); 
        } 
       }, 
       close: function() { 
        allFields.val("").removeClass("ui-state-error"); 
       } 
      }); 

      $("#create-user") 
       .button() 
       .click(function() { 
        $("#dialog-form").dialog("open"); 
       }); 

     </script> 

     <div style="float: left; width: 250px;"> 
      <button id="create-user">Create new user</button> 
     </div> 

    </div> 
</section> 
} 

:

BundleConfig:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-1.8.2.min.js")); 

bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
        "~/Scripts/jquery-ui-1.8.24.js")); 

_Layout:

<head> 
    <meta charset="utf-8" /> 
    <title>@ViewBag.Title - My ASP.NET MVC Application</title> 
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" /> 
    <meta name="viewport" content="width=device-width" /> 
    @Styles.Render("~/Content/css") 
    @Scripts.Render("~/bundles/jquery") 
    @Scripts.Render("~/bundles/jqueryui") 

</head> 
<body> 
    <div id="body"> 
     @RenderSection("featured", required: false) 
     <section class="content-wrapper main-content clear-fix"> 
      @RenderBody() 
     </section> 
    </div> 
    <footer> 
     <div class="content-wrapper"> 
      <div class="float-left"> 
       <p>&copy; @DateTime.Now.Year - My ASP.NET MVC Application</p> 
      </div> 
     </div> 
    </footer> 


    @RenderSection("scripts", required: false) 
</body> 

ve Index Yani bu kod ile bitirmek bir öğretici aşağıdaki 0x800a1391 ile - JavaScript çalışma zamanı hatası: 'jQuery' tanımlanmamış, jquery-ui kütüphanesi içinde. Kodu bir html sayfasına koyarsam beklendiği gibi çalışır. Yani sorun MVC projesinden geliyor. Windows 8'de görsel stüdyo 2012 kullanıyorum. Herhangi bir düşünce?

+0

dosyasını çalıştırdıktan sonra nasıl işleneceğini bize gösterebilir –

+2

Tarayıcıda, oluşturulan gerçek "komut dosyası" öğelerine bakın. Muhtemelen jQuery komut dosyasının yolunun bir şekilde kapalı olduğunu göreceksiniz. –

+0

sadece başlığında görünür. – Wosh

cevap

9

Varsayılan olarak, MVC paketi, dosya adına .min ile dosyaları yok sayar.

Sorunu gidermek için jQuery öğesinin minimize edilmemiş sürümünü kullanın (ya da yalnızca dosyayı yeniden adlandırın) - dağıtıldığında, grup zaten jQuery dosyasını küçültür.


Sen (ama varsayılanlarla yapışmasını ve sadece dosyaları yeniden adlandırma öneririz) RegisterBundles yöntemde IgnoreList temizleyerek bu davranışı değiştirebilirsiniz

Güncelleme:

// Clear all items from the ignore list to allow minified CSS and JavaScript 
// files in debug mode 
bundles.IgnoreList.Clear();  

// Add back the default ignore list rules sans the ones which affect minified 
// files and debug mode 
bundles.IgnoreList.Ignore("*.intellisense.js"); 
bundles.IgnoreList.Ignore("*-vsdoc.js"); 
bundles.IgnoreList.Ignore("*.debug.js", OptimizationMode.WhenEnabled); 

bakın Telerik docs'da daha fazla.

+0

Bunu yapsam, "İstisna 5288 satırında atıldı, sütun 6: http: // localhost: 53886/Scripts/jquery-1.8.2.js 0x800a139e - JavaScript çalışma zamanı hatası: SyntaxError' – Wosh

+0

'BundleConfig' dosyasındaki yol da projeyi yeniden oluşturdu? –

+0

yep şimdi jquery başlıkta göründüğünde – Wosh

10

Bu hatayı alırken karşılaştığım sorun, aşağıdaki ifadelerin, belgenin <head> numaralı belgede olmaması, ancak belgenin sonundaki </body> etiketinin hemen öncesindeydi. Benim .cshtml dosyasının <head> onları taşındı kez

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/jqueryui") 
@Scripts.Render("~/bundles/bootstrap") 

, her şey iyi çalıştı.

+0

+1, çünkü bu bana yardımcı oldu. Layout.cshtml dosyasında @ Script.Register'ı kaldırmak ve içinde çalıştığım cshtml dosyasına dahil etmek zorunda kaldım. –

+0

Bir MVC projesi için varsayılan düzen, scripts.render bölümünü gövdenin altına koymaktır. bunun gibi. – redwards510

2

Yaklaşık bir saat boyunca bununla uğraştım, hemen hemen tüm çözümler, komut dosyalarınızı aradığınız düzen ve yönteme geliyor. paketleyicilerinin sorunlara neden olduğunu buldum (benim için o ui paketi oldu)

İşte benim için çalışan emirdir.

<script src="/Scripts/modernizr-2.5.3.js"></script> 
    <script src="/Scripts/jquery-1.7.1.js"></script> 
    <script src="/bundles/jquery-ui"></script> 
    <script src="/Scripts/jquery.unobtrusive-ajax.js"></script> 
    <script src="/Scripts/jquery.validate.js"></script> 
    <script src="/Scripts/jquery.validate.unobtrusive.js"></script> 
5

Sadece IE sahiptir böylece

@section scripts 
    { 
    <script> 
    $(function() { 



     }); 

    }); 

    </script> 
} 
+1

Bu, çalışmak ve daha zarif olmak gibi görünüyor, tabii ki, aynı dosyada iki farklı olana sahip olmak! – JosephDoggie

1

gibi komut etrafında @section alfabeler kullanan bir diğer sözdizimi denetimi Kenar, Chrome ve Firefox dışında, javascript. Kodumda, MVC uygulamasında BundleOptimization açık olduğunda aynı hatayı aldım. Ben çerçeve olarak angularjs kullanın ve bir satır tüm paket mahvettim ve bir basamaklı etkisi yaptı:

$http.post('/controller/action', { dto }) 

süslü parantez {} Çıkarma - benim 'kayıp JQuery-sorunu' çözüldü.Ancak ilk önce IE'de hata ayıklama yaparak bulduğum (hata ayıklama modunda F8'e basarak): enter image description here JQuery hata iletisi yanıltıcıdır, ancak sözdizimi hatası doğru satırı belirtir, bu yüzden hatayı düzeltebilirim.

İlgili konular