15

MVC uygulamam, gönderim sonrasında Javascript sözdizimi hatasına neden olan aşağıdaki HTML'yi üretiyor (iki metin kutusuna hiçbir şey yazmıyorum).Göze batmayan doğrulama sırasında parseJSON ile sözdizimi hatası

<form action="/UrIntake/Save" id="UrIntakeForm" method="post"> 

    <input data-val="true" data-val-length="The field LastName must be a string with a maximum length of 50." data-val-length-max="50" data-val-required="The LastName field is required." id="FormSubmitter_LastName" name="FormSubmitter.LastName" type="text" value="" /> 
    <input data-val="true" data-val-length="The field FirstName must be a string with a maximum length of 50." data-val-length-max="50" data-val-required="The FirstName field is required." id="FormSubmitter_FirstName" name="FormSubmitter.FirstName" type="text" value="" /> 

    <div id="SubmissionButtons" class="right"> 
      <input type="button" onclick="SubmitForm()" value="Submit" /> 
      <input type="button" onclick="CancelForm()" value="Cancel" /> 
    </div> 
</form> 

    function SubmitForm() { 
     $("#UrIntakeForm").valid(); 
. 
. 
. 

Bu sözdizimi hatası oluştuğu jQuery kodu (v1.9.0): İşte oluşturulan HTML ve teslim işleyicisi var. Ben metin kutuları içine bir şey girmek gerekmez (ve ardından "alanı gerekiyor" iletisini almalısınız,

parseJSON: function(data) { 
    // Attempt to parse using the native JSON parser first 
    if (window.JSON && window.JSON.parse) { 
     return window.JSON.parse(data); 
    } 

Tahminen: "data" tanımsız ve hatanın oluştuğu "dönüş" çizgidir). Bu, hataya neden olan şey mi? Bu mantıklı değil, ama başka ne olduğunu göremiyorum.

+0

hata burada gösteriyorsanız ne fark olduğunu düşünmüyorum:

düzgün bu bağlantıdan bir istisna neden olmadan doğrular bu script Microsoft sürümünü indirebilirsiniz. Hatanın oluştuğu jQuery koduna bir kesme noktası koymayı deneyin ve nereden arandığını görmek için yığın izine geri bakın. Bu, null'un bu işleve neden geçtiğine dair ipuçları verecektir. – Jerry

+0

Yapacak. Yardımcı bir şey keşfettiğimde, geri döneceğim. Teşekkürler. – birdus

+0

Lütfen Microsoft'un bunu düzeltmesini sağlayın: http://connect.microsoft.com/VisualStudio/feedback/details/776965/please-support-jquery-v1-9-0-properly-in-jquery-validate-unobtrusive –

cevap

20

Nedeni

Bu ASP.NET.MVC paketinde jquery.validate.unobtrusive.js ile bir konudur.

jQuery 1.9 sürümünden parseJSON() davranışı değişti ve undefined değeri hatalı biçimlendirilmiş bir JSON olarak düşünülebilir. Daha fazla bilgi için jQuery 1.9 Core Upgrade Guide'a bakın.

Çözelti

kullanımı, diğer şeylerin yanı sıra JQuery parseJSON() programı için geriye dönük uyumluluk ekler jQuery Migrate plugin.


DÜZENLEME

bu thread on Microsoft Connect yılında resmi duyuruya göre, konu çerçevesinde son sürümde giderilmiştir.

Andreas Larsen'in yorumlarda da belirttiği gibi, doğal olarak, yeni sürüme geçtikten sonra, sunucu tarafı ve istemci tarafı ilgili tüm önbelleği temizlediğinizden emin olun.

+1

@birdus Sorun değil. JQuery 1.9 sürümü birçok çerçevede bu tür sorunların çoğuna neden oldu. – Boaz

+0

Lütfen Microsoft'u en kısa sürede düzeltin: http://connect.microsoft.com/VisualStudio/feedback/details/776965/please-support-jquery-v1-9-0-düzgün-in-jquery-validate-unobtrusive –

+0

MS yeni göze batmayan ve göze batmayan ajax paketlerini yayınladı. live() işlevi on() ile değiştirildi ve ayrıca json ayrıştırma sorunu çözüldü. – firepol

İlgili konular