2011-12-13 15 views
28

से JQUERY AJAX गुजरने का मान कंट्रोलर को देखने (jquery/AJAX का उपयोग करके) txtComments के मान को पास करना है।एमवीसी व्यू से कंट्रोलर

समस्या यह है कि AJAX/jquery स्ट्रिंग टैग को स्ट्रिंग के रूप में स्वीकार नहीं करता है। मतलब, जब मैं txtComments में कोई स्क्रिप्ट/एचटीएमएल टैग इनपुट करता हूं तो AJAX त्रुटि फ़ंक्शन पर जाता है और नियंत्रक में जाने में सक्षम नहीं होता है।

यहाँ jQuery है:

 [HttpPost] 
     public ActionResult SaveComments(int id, string comments){ 
      var actions = new Actions(User.Identity.Name); 
      var status = actions.SaveComments(id, comments); 
      return Content(status); 
     } 

मैं भी (टिप्पणी), लेकिन अब भी वही करने की कोशिश की भागने के बजाय $('#txtComments').serialize():

 $('#btnSaveComments').click(function() { 
      var comments = $('#txtComments').val(); 
      var selectedId = $('#hdnSelectedId').val(); 

      $.ajax({ 
       url: '<%: Url.Action("SaveComments")%>?id=' + selectedId + '&comments=' + escape(comments), 
       type: "post", 
       cache: false, 
       success: function (savingStatus) { 
        $("#hdnOrigComments").val($('#txtComments').val()); 
        $('#lblCommentsNotification').text(savingStatus); 
       }, 
       error: function (xhr, ajaxOptions, thrownError) { 
        $('#lblCommentsNotification').text("Error encountered while saving the comments."); 
       } 
      }); 
     }); 

यहाँ नियंत्रक है।

+0

मुझे एक ही समस्या का सामना करना पड़ रहा है! आपने इसे कैसे ठीक किया? – moji

उत्तर

42

$.ajax फ़ंक्शन के data विकल्प का उपयोग करने का प्रयास करें। अधिक जानकारी here

$('#btnSaveComments').click(function() { 
    var comments = $('#txtComments').val(); 
    var selectedId = $('#hdnSelectedId').val(); 

    $.ajax({ 
     url: '<%: Url.Action("SaveComments")%>', 
     data: { 'id' : selectedId, 'comments' : comments }, 
     type: "post", 
     cache: false, 
     success: function (savingStatus) { 
      $("#hdnOrigComments").val($('#txtComments').val()); 
      $('#lblCommentsNotification').text(savingStatus); 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
      $('#lblCommentsNotification').text("Error encountered while saving the comments."); 
     } 
    }); 
}); 
+0

धन्यवाद! इसने काम कर दिया। मैंने अभी डेटा को कोड में संशोधित किया है: {'id': चयनित आईडी, 'टिप्पणियां': बचें (टिप्पणियां)} तो jquery/AJAX इसे स्वीकार करेगा। – cjBognot

5
$('#btnSaveComments').click(function() { 
    var comments = $('#txtComments').val(); 
    var selectedId = $('#hdnSelectedId').val(); 

    $.ajax({ 
     url: '<%: Url.Action("SaveComments")%>', 
     data: { 'id' : selectedId, 'comments' : comments }, 
     type: "post", 
     cache: false, 
     success: function (savingStatu`enter code here`s) { 
      $("#hdnOrigComments").val($('#txtComments').val()); 
      $('#lblCommentsNotification').text(savingStatus); 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
      $('#lblCommentsNotification').text("Error encountered while saving the comments."); 
     } 
    }); 
}); 
6

यहाँ एक ही कॉल करने के लिए एक वैकल्पिक तरीका है। और आपका प्रकार हमेशा सीएपीएस में होना चाहिए, उदाहरण के लिए। टाइप करें: "प्राप्त करें"/प्रकार: "पोस्ट"।

$.ajax({ 
     url:/ControllerName/ActionName, 
     data: "id=" + Id + "&param2=" + param2, 
     type: "GET", 
     success: function(data){ 
      // code here 
     }, 
     error: function(passParams){ 
      // code here 
     } 
}); 

एक और विकल्प एक लिंक पर डेटा-AJAX का उपयोग करना होगा।

<a href="/ControllerName/ActionName/" data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-update="#_content">Click Me!</a> 

यू मान लिया जाये साथ एक div मैं, _content था इस कार्रवाई कॉल और डेटा है कि कार्रवाई से लौटे साथ कि div के अंदर सामग्री का स्थान ले लेगा था।

<div id="_content"></div> 

वास्तव में आपके प्रश्न का सीधा जवाब नहीं है, लेकिन इसकी कुछ जानकारी आपको अवगत होना चाहिए;)।

0
View Data 
============== 


@model IEnumerable<DemoApp.Models.BankInfo> 
<p> 
    <b>Search Results</b> 
</p> 
@if (!Model.Any()) 
{ 
    <tr> 
     <td colspan="4" style="text-align:center"> 
      No Bank(s) found 
     </td> 
    </tr> 
} 
else 
{ 
    <table class="table"> 
     <tr> 
      <th> 
       @Html.DisplayNameFor(model => model.Name) 
      </th> 
      <th> 
       @Html.DisplayNameFor(model => model.Address) 
      </th> 
      <th> 
       @Html.DisplayNameFor(model => model.Postcode) 
      </th> 
      <th></th> 
     </tr> 

     @foreach (var item in Model) 
     { 
      <tr> 
       <td> 
        @Html.DisplayFor(modelItem => item.Name) 
       </td> 
       <td> 
        @Html.DisplayFor(modelItem => item.Address) 
       </td> 
       <td> 
        @Html.DisplayFor(modelItem => item.Postcode) 
       </td> 
       <td> 
        <input type="button" class="btn btn-default bankdetails" value="Select" data-id="@item.Id" /> 
       </td> 
      </tr> 
     } 
    </table> 
} 


<script src="~/Scripts/jquery-1.10.2.min.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     $("#btnSearch").off("click.search").on("click.search", function() { 
      if ($("#SearchBy").val() != '') { 
       $.ajax({ 
        url: '/home/searchByName', 
        data: { 'name': $("#SearchBy").val() }, 
        dataType: 'html', 
        success: function (data) { 
         $('#dvBanks').html(data); 
        } 
       }); 
      } 
      else { 
       alert('Please enter Bank Name'); 
      } 
     }); 
} 
}); 


public ActionResult SearchByName(string name) 
     { 
      var banks = GetBanksInfo(); 
      var filteredBanks = banks.Where(x => x.Name.ToLower().Contains(name.ToLower())).ToList(); 
      return PartialView("_banks", filteredBanks); 
     } 

     /// <summary> 
     /// Get List of Banks Basically it should get from Database 
     /// </summary> 
     /// <returns></returns> 
     private List<BankInfo> GetBanksInfo() 
     { 
      return new List<BankInfo> 
      { 
       new BankInfo {Id = 1, Name = "Bank of America", Address = "1438 Potomoc Avenue, Pittsburge", Postcode = "PA 15220" }, 
       new BankInfo {Id = 2, Name = "Bank of America", Address = "643 River Hwy, Mooresville", Postcode = "NC 28117" }, 
       new BankInfo {Id = 3, Name = "Bank of Barroda", Address = "643 Hyderabad", Postcode = "500061" }, 
       new BankInfo {Id = 4, Name = "State Bank of India", Address = "AsRao Nagar", Postcode = "500061" }, 
       new BankInfo {Id = 5, Name = "ICICI", Address = "AsRao Nagar", Postcode = "500061" } 
      }; 
     } 
+2

अगर आप उत्तर के बारे में कुछ टिप्पणी जोड़ते हैं तो अच्छा होगा! –

संबंधित मुद्दे