दिलचस्प पोस्ट
तृतीय पक्ष वेब सेवा के माध्यम से क्लाइंट आईपी पता प्राप्त करें नियमित अभिव्यक्ति के साथ सीरिलिक वर्णों का मिलान कैसे करें मेरी जावास्क्रिप्ट को "नो" एक्सेस-कंट्रोल-अनुमति-मूल-शीर्षक क्यों मिलता है? अनुरोधित संसाधन पर मौजूद है "त्रुटि जब डाकिया नहीं करता है? सर्वश्रेष्ठ जावा / स्विंग ब्राउज़र घटक? EntityFramework – समग्र कुंजी की क्वेरी शामिल है ब्लैकबेरी में छवि बटन जावास्क्रिप्ट – वर्ग कोष्ठक के बीच वापसी स्ट्रिंग HttpServletRequest यूआरएल को पूरा करने के लिए MYSQL या बनाम प्रदर्शन में आइटीआईटी फ़्रेमवर्क 4.1 में पीओसीओ कोड प्रथम क्या है? एक बहुभाषी डेटाबेस के लिए स्कीमा क्यों नॉन-डिटरनिस्टिकवादी ऑर्डर करने वाला डिक्शनरी है? जावास्क्रिप्ट में दो सरणियों के बीच अंतर कैसे प्राप्त करें? सी ++ वेक्टर तत्व को स्थान से बजाय मूल्य से मिटा दें? एक सूचक का आकार क्या है?

JQuery के अजाक्स का उपयोग कर एक MVC नियंत्रक विधि में ऑब्जेक्ट्स की एक सूची पास करना

मैं jQuery के AJAX () फ़ंक्शन का उपयोग कर एक MVC नियंत्रक विधि में वस्तुओं की एक सरणी को पार करने की कोशिश कर रहा हूं। जब मैं PassThing () सी # नियंत्रक विधि में मिलता है, तर्क "चीज़ें" शून्य है। मैंने तर्क के लिए एक प्रकार की सूची का उपयोग करने की कोशिश की है, लेकिन वह या तो काम नहीं करता है मैं क्या गलत कर रहा हूं?

<script type="text/javascript"> $(document).ready(function () { var things = [ { id: 1, color: 'yellow' }, { id: 2, color: 'blue' }, { id: 3, color: 'red' } ]; $.ajax({ contentType: 'application/json; charset=utf-8', dataType: 'json', type: 'POST', url: '/Xhr/ThingController/PassThing', data: JSON.stringify(things) }); }); </script> public class ThingController : Controller { public void PassThing(Thing[] things) { // do stuff with things here... } public class Thing { public int id { get; set; } public string color { get; set; } } } 

वेब के समाधान से एकत्रित समाधान "JQuery के अजाक्स का उपयोग कर एक MVC नियंत्रक विधि में ऑब्जेक्ट्स की एक सूची पास करना"

निकवेल के सुझाव का उपयोग करते हुए, मैं things = JSON.stringify({ 'things': things }); का उपयोग करके यह कार्य प्राप्त कर पा रहा था things = JSON.stringify({ 'things': things }); यहां पूरा कोड है

 $(document).ready(function () { var things = [ { id: 1, color: 'yellow' }, { id: 2, color: 'blue' }, { id: 3, color: 'red' } ]; things = JSON.stringify({ 'things': things }); $.ajax({ contentType: 'application/json; charset=utf-8', dataType: 'json', type: 'POST', url: '/Home/PassThings', data: things, success: function () { $('#result').html('"PassThings()" successfully called.'); }, failure: function (response) { $('#result').html(response); } }); }); public void PassThings(List<Thing> things) { var t = things; } public class Thing { public int Id { get; set; } public string Color { get; set; } } 

इसमें दो चीजें हैं जिन्हें मैंने सीखा है: 1) एजाक्स () फ़ंक्शन में कंटेंटटाइप और डेटाटाइप सेटिंग्स बिल्कुल जरूरी हैं यदि वे गायब हैं तो यह काम नहीं करेगा मुझे यह बहुत परीक्षण और त्रुटि के बाद मिला। 2) ऑब्जेक्ट्स की एक सरणी में एक एमवीसी नियंत्रक विधि में पास करने के लिए, बस JSON.stringify ({'things': things}) प्रारूप का उपयोग करें।

मैं उम्मीद करता हूं कि इससे किसी की मदद होगी!

क्या आप ऐसा नहीं कर सकते?

 var things = [ { id: 1, color: 'yellow' }, { id: 2, color: 'blue' }, { id: 3, color: 'red' } ]; $.post('@Url.Action("PassThings")', { things: things }, function () { $('#result').html('"PassThings()" successfully called.'); }); 

… और अपनी कार्रवाई को अपने साथ चिह्नित करें

 [HttpPost] public void PassThings(IEnumerable<Thing> things) { // do stuff with things here... } 

आपके डेटा को प्रारूपित करना जो समस्या हो सकती है इनमें से किसी एक को आज़माएं:

 data: '{ "things":' + JSON.stringify(things) + '}', 

या ( मैं एएसपी.नेट एमवीसी नियंत्रक को एक फार्म के बिना स्ट्रिंग की सरणी कैसे पोस्ट कर सकता हूं? )

 var postData = { things: things }; ... data = postData 

मेरे पास इस सब के लिए सही जवाब है: मैंने इतने सारे समाधानों की कोशिश की, जो अंततः स्वयं को प्रबंधित करने में सक्षम नहीं हो पाया, कृपया नीचे दिए गए विवरण का विवरण पाएं:

  $.ajax({ traditional: true, url: "/Conroller/MethodTest", type: "POST", contentType: "application/json; charset=utf-8", data:JSON.stringify( [ { id: 1, color: 'yellow' }, { id: 2, color: 'blue' }, { id: 3, color: 'red' } ]), success: function (data) { $scope.DisplayError(data.requestStatus); } }); 

controler

 public class Thing { public int id { get; set; } public string color { get; set; } } public JsonResult MethodTest(IEnumerable<Thing> datav) { //now datav is having all your values } 

यह आपकी क्वेरी के लिए कोड काम कर रहा है, आप इसका उपयोग कर सकते हैं।

controler

  [HttpPost] public ActionResult save(List<ListName> listObject) { //operation return Json(new { istObject }, JsonRequestBehavior.AllowGet); } } 

जावास्क्रिप्ट

  $("#btnSubmit").click(function () { var myColumnDefs = []; $('input[type=checkbox]').each(function () { if (this.checked) { myColumnDefs.push({ 'Status': true, 'ID': $(this).data('id') }) } else { myColumnDefs.push({ 'Status': false, 'ID': $(this).data('id') }) } }); var data1 = { 'listObject': myColumnDefs}; var data = JSON.stringify(data1) $.ajax({ type: 'post', url: '/Controller/action', data:data , contentType: 'application/json; charset=utf-8', success: function (response) { //do your actions }, error: function (response) { alert("error occured"); } }); 

एकमात्र तरीका मैं इसे काम करने के लिए मिल सकता है JSON को एक स्ट्रिंग के रूप में पास करना और उसे JavaScriptSerializer.Deserialize<T>(string input) स्तरीयइज़र के जरिए उपयोग JavaScriptSerializer.Deserialize<T>(string input) डायरेरिअलाइज़ JavaScriptSerializer.Deserialize<T>(string input) , जो कि बहुत अजीब है यदि यह MVC 4 के लिए डिफ़ॉल्ट deserializer है

मेरे मॉडल ने ऑब्जेक्ट की सूचीओं को नेस्टेड किया है और सबसे अच्छा मैं JSON डेटा का उपयोग कर सकता था यह सबसे ऊपर की सूची है जिसमें उसमें मदों की सही संख्या है, लेकिन आइटम में सभी फ़ील्ड शून्य थे।

इस तरह की चीज इतनी मुश्किल नहीं होनी चाहिए।

  $.ajax({ type: 'POST', url: '/Agri/Map/SaveSelfValuation', data: { json: JSON.stringify(model) }, dataType: 'text', success: function (data) { [HttpPost] public JsonResult DoSomething(string json) { var model = new JavaScriptSerializer().Deserialize<Valuation>(json); 
  var List = @Html.Raw(Json.Encode(Model)); $.ajax({ type: 'post', url: '/Controller/action', data:JSON.stringify({ 'item': List}), contentType: 'application/json; charset=utf-8', success: function (response) { //do your actions }, error: function (response) { alert("error occured"); } }); 

यदि आप एएसपी.नेट वेब एपीआई का उपयोग कर रहे हैं तो आपको बस data: JSON.stringify(things) पास करना चाहिए data: JSON.stringify(things)

और आपके नियंत्रक को ऐसा कुछ दिखना चाहिए:

 public class PassThingsController : ApiController { public HttpResponseMessage Post(List<Thing> things) { // code } } 

@ एहेश्रेस से संशोधन

  var data=[ { id: 1, color: 'yellow' }, { id: 2, color: 'blue' }, { id: 3, color: 'red' } ]; //parameter var para={}; para.datav=data; //datav from View $.ajax({ traditional: true, url: "/Conroller/MethodTest", type: "POST", contentType: "application/json; charset=utf-8", data:para, success: function (data) { $scope.DisplayError(data.requestStatus); } }); In MVC public class Thing { public int id { get; set; } public string color { get; set; } } public JsonResult MethodTest(IEnumerable<Thing> datav) { //now datav is having all your values } 

वस्तुओं की अपनी सूची को किसी अन्य ऑब्जेक्ट से प्रॉपर्टी के साथ लपेटकर जो उस पैरामीटर के नाम से मेल खाता है जो कि एमवीसी नियंत्रक द्वारा अपेक्षित है। महत्वपूर्ण बिट ऑब्जेक्ट सूची के चारों ओर रैपर है।

 $(document).ready(function () { var employeeList = [ { id: 1, name: 'Bob' }, { id: 2, name: 'John' }, { id: 3, name: 'Tom' } ]; var Employees = { EmployeeList: employeeList } $.ajax({ dataType: 'json', type: 'POST', url: '/Employees/Process', data: Employees, success: function () { $('#InfoPanel').html('It worked!'); }, failure: function (response) { $('#InfoPanel').html(response); } }); }); public void Process(List<Employee> EmployeeList) { var emps = EmployeeList; } public class Employee { public int Id { get; set; } public string Name { get; set; } }