2013-09-04 9 views
9

यह समस्या मुझे कुछ घंटों से अधिक समय के लिए थोड़ा सा पागल कर रही है। मैंने अब इतनी सारी पोस्ट और लेख पढ़े हैं कि मुझे समस्या की अस्पष्ट समझ है लेकिन कारण नहीं है। मुझे एहसास है कि समस्या यह है कि जब मैं किसी ऑब्जेक्ट पर JSON.parse की तरह कुछ सबमिट करता हूं जो अनिर्धारित है। मैं यह नहीं समझ सकता कि ऐसा क्यों है। मुझे यकीन है कि यह बहुत आसान है और मुझे यकीन है कि एक बार यह इंगित करने के बाद मैं एक उपकरण महसूस करूंगा, लेकिन अब अगर मुझे समस्या का सामना करना पड़ता है तो मुझे थोड़ा मूर्ख महसूस नहीं होता है।पार्सजॉन अनकॉट सिंटेक्स त्रुटि: अप्रत्याशित टोकन u

Uncaught SyntaxError: Unexpected token u js:1 
i.extend.parseJSON js:1 
c js:1 
u js:1 
n.extend.showLabel js:1 
n.extend.defaultShowErrors js:1 
n.extend.showErrors js:1 
n.extend.element js:1 
n.extend.defaults.onfocusout js:1 
r js:1 
(anonymous function) js:1 
i.event.dispatch js:1 
y.handle js:1 
i.event.trigger js:1 
i.event.simulate js:1 
f 
: मैदान में

Uncaught SyntaxError: Unexpected token u js:1 
i.extend.parseJSON js:1 
c js:1 
u js:1 
n.extend.showLabel js:1 
n.extend.defaultShowErrors js:1 
n.extend.showErrors js:1 
n.extend.form js:1 
n.extend.valid js:1 
(anonymous function) 
i.event.dispatch js:1 
y.handle 

इसके अलावा जब मैं मैदान से कर्सर ले जाने के मैं इस त्रुटि मिलती है:

समस्या यह है कि जब मैं नीचे दिए गए तरीकों मैं निम्नलिखित त्रुटि मिलती है का उपयोग कर प्रपत्र सबमिट है

यह स्पष्ट रूप से प्रसंस्करण के लिए फॉर्म को नियंत्रक को जमा करने से रोकता है। त्रुटि jquery लाइब्रेरी (लाइन 498) से होती है जब यह कोशिश करता है: वापस n.JSON.parse (टी); (टी अपरिभाषित है)। मैं jquery 1.9.1, बूटस्ट्रैप 2.2.2 और jqValidate/1.9.0.unobtrusive.js का उपयोग कर रहा हूं। प्रपत्र एक बूटस्ट्रैप मोडल में है और इस प्रकार दिखता है:

<div class="row-fluid"> 
    <div class="span12"> 
     <button id="btnclick" class="btn btn-large btn-block btn-primary">Click Me</button> 
    </div> 
</div> 

<div id="mainmodal" class="modal hide fade"></div> 

<script type="text/javascript"> 
    $('#btnclick').click(function() { 
     $.ajax({ 
      url: '@Url.Action("GetUser", "Home")', 
      type: 'GET', 
      success: function (result) { 
       //awss.modal.popup(result); 
       $('#mainmodal').html(result); 
       $('#mainmodal').modal('show'); 
      } 
     }); 
     return; 
    }); 
</script> 

इस नियंत्रक से::

public ActionResult GetUser() 
    { 
     var user = new UserModel 
      { 
       Id = 1, 
       Username = "sbody", 
       FirstName = "Some", 
       LastName = "Body", 
       Email = "[email protected]", 
       UserTypeId = 6, 
       Created = new DateTime(2013, 1, 1), 
       Active = true 
      }; 
     return PartialView("EditUser", user); 
    } 

दोनों ClientValidationEnabled और UnobtrusiveJavaScriptEnabled सक्षम होते हैं

@model AModelTestApp.Models.UserModel 

<div class="modal-header"> 
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
    <h3>User</h3> 
</div> 

<div class="modal-body"> 

    @{ 
     var ajaxOptions = new AjaxOptions 
      { 
       HttpMethod = "POST", 
       OnComplete = "Complete" 
      }; 
    } 

    @using (Ajax.BeginForm("EditUser", "Home", ajaxOptions, new { id = "userform" })) 
    { 
     <div class="row-fluid"> 
      <div class="span12"> 
       @Html.ValidationSummary("Ooops..", new { id = "validateuser", @class = "alert alert-error" }) 
      </div> 
     </div> 

     <div class="row-fluid"> 
      <div class="span6"> 
       @Html.LabelFor(m => m.Id) 
       @Html.TextBoxFor(m => m.Id) 

       @Html.LabelFor(m => m.Username) 
       @Html.TextBoxFor(m => m.Username) 

       @Html.LabelFor(m => m.FirstName) 
       @Html.TextBoxFor(m => m.FirstName) 

       @Html.LabelFor(m => m.LastName) 
       @Html.TextBoxFor(m => m.LastName) 
      </div> 
      <div class="span6"> 
       @Html.LabelFor(m => m.Email) 
       @Html.TextBoxFor(m => m.Email) 

       @Html.LabelFor(m => m.UserTypeId) 
       @Html.TextBoxFor(m => m.UserTypeId) 

       @Html.LabelFor(m => m.Created) 
       @Html.TextBoxFor(m => m.Created) 

       @Html.LabelFor(m => m.Active) 
       @Html.CheckBoxFor(m => m.Active) 
      </div> 
     </div> 
     <div class="row-fluid"> 
      <div class="span1 offset10"> 
       <a id="btnclear" class="btn" href="#">Clear</a> 
      </div> 
     </div> 
    } 

</div> 

<div class="modal-footer"> 
    <a class="btn" data-dismiss="modal" href="#">Close</a> 
    <a id="btnsubmit" class="btn btn-info" href="#">Submit</a> 
</div> 

<script type="text/javascript"> 
    $.validator.unobtrusive.parse($('#userform')); 

    $('#btnclear').click(function() { 
     $('input').val(''); 
     $(':checkbox').prop('checked', false); 
     return false; 
    }); 

    $('#btnsubmit').click(function() { 

     $('#userform').validate(); 
     if ($('#userform').valid()) { 
      $('#userform').submit(); 
     } else { 
      alert("Something went wrong with the validation") 
     } 

    }); 

    function Complete(result) { 
     alert("Woooo - " + result); 
    } 
</script> 

मोडल इस प्रकार भरी हुई है web.config में। मुझे उम्मीद है कि यह मेरे लिए एक ही समस्या को बहुत लंबे समय तक देख रहा है और स्पष्ट नहीं देख सकता है। किसी भी मदद की बहुत सराहना की। धन्यवाद :)

+10

ऐड jQuery अनुपलब्ध अंतराल की वजह से हुआ है।अपनी स्क्रिप्ट सूची में माइग्रेट करें, सोचें कि इसे – Slicksim

+0

सॉर्ट करना चाहिए जो वास्तव में काम करता है। धन्यवाद। क्या मैं यहां एक पुरानी तकनीक का उपयोग कर रहा हूं या क्या कोई ऐसा संघर्ष है जिसे मैं अनजान हूं? – Tikeb

+3

jquery 1.9+ अविभाज्य-AJAX और सत्यापन पुस्तकालयों के साथ मुद्दों का कारण बनता है। माइग्रेट पैकेज उस कार्यक्षमता को वापस जोड़ता है जो jquery की 1.8+ श्रृंखला में था। – Slicksim

उत्तर

1

आप अपने ajax सफलता समारोह में निम्नलिखित

'$.parseJSON(result)' 

उपयोग parseJSON आजमा सकते हैं।

1

यह सुनिश्चित नहीं है कि यह इस मामले में लागू है या नहीं, लेकिन मुझे इस तरह के स्पोराडिक मुद्दों को अविभाज्य सत्यापन के साथ मिला है।

आपके पास एक प्रमाणीकरण सारांश तत्व है, इसलिए यह लागू नहीं हो सकता है .. लेकिन जब मैं इसे देखता हूं तो यह तब होता है जब मैंने सत्यापन संदेश तत्व शामिल नहीं किया था।

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

तो, अपने कोड के लिए, हो सकता है कुछ इस तरह का प्रयास करें:

<div class="row-fluid"> 
    <div class="span6"> 
     @Html.LabelFor(m => m.Id) 
     @Html.TextBoxFor(m => m.Id) 
     @Html.ValidationMessageFor(m => m.Id) 

     @Html.LabelFor(m => m.Username) 
     @Html.TextBoxFor(m => m.Username) 
     @Html.ValidationMessageFor(m => m.Username) 

     @Html.LabelFor(m => m.FirstName) 
     @Html.TextBoxFor(m => m.FirstName) 
     @Html.ValidationMessageFor(m => m.FirstName) 

     @Html.LabelFor(m => m.LastName) 
     @Html.TextBoxFor(m => m.LastName) 
     @Html.ValidationMessageFor(m => m.LastName) 
    </div> 
    <div class="span6"> 
     @Html.LabelFor(m => m.Email) 
     @Html.TextBoxFor(m => m.Email) 
     @Html.ValidationMessageFor(m => m.Email) 

     @Html.LabelFor(m => m.UserTypeId) 
     @Html.TextBoxFor(m => m.UserTypeId) 
     @Html.ValidationMessageFor(m => m.UserTypeId) 

     @Html.LabelFor(m => m.Created) 
     @Html.TextBoxFor(m => m.Created) 
     @Html.ValidationMessageFor(m => m.Created) 

     @Html.LabelFor(m => m.Active) 
     @Html.CheckBoxFor(m => m.Active) 
     @Html.ValidationMessageFor(m => m.Active) 

    </div> 
</div> 
0

बस जोड़ने के लिए निम्न कोड मुद्दा त्रुटि संदेश दिखाने के लिए

$('input[name],select[name]').each(function() 
{ 

    if ($(this).attr('name') != '') 
    { 

     if ($(this).closest('div').find('span[data-valmsg-for=' + $(this).attr('name') + ']').length == 0) 
     { 
      $(this).closest('div').append('<span class="field-validation-valid error_msg" data-valmsg-for="' + $(this).attr('name') + '" data-valmsg-replace="true"></span>'); 
     } 
    } 
}) 
संबंधित मुद्दे