दिलचस्प पोस्ट
jQuery के मान्य – छिपे हुए क्षेत्रों के लिए सत्यापन सक्षम करें PHP – सबसे अच्छा कैसे तय करना है कि मौजूदा आमंत्रण सीएलआई या वेब सर्वर से है? ईएस 6 जावास्क्रिप्ट में प्रतीक (@) पर क्या होता है? (ECMAScript 2015) लाखों पंक्तियों के लिए जावास्क्रिप्ट डेटा ग्रिड PHP का उपयोग करने के लिए इनपुट फ़ील्ड मान कैसे प्राप्त करें PHP के साथ एक ढांचा का उपयोग क्यों करें? ग्रन्ट, एनपीएम और बोवर के बीच का अंतर (पैकेज.जेसन बनाम बोवर.जेसन) कैसे एक गुण फ़ाइल के साथ log4j को कॉन्फ़िगर करें पुरानी सीएसवी फ़ाइल अजगर के लिए नई पंक्ति जोड़ें setBackground बनाम सेटबैकग्राउंडड्रायबल (एंड्रॉइड) रूटर v4 प्रतिक्रिया के साथ नेस्टेड मार्ग आईफ़ोन डिवाइस पर विधि स्विजल पायथन में इंटरलीविंग सूचियां जावा 7 अपडेट 45 के साथ, जेएनएलपी टैग "प्रॉपर्टी" से सिस्टम गुण अब लंबा सेट नहीं है एनीमेशन और संक्रमण का संयोजन ठीक से काम नहीं कर रहा है

जोरदार टाइप किए गए MVC3 दृश्य से मॉडल पास करने के लिए jquery में AJAX पोस्ट का उपयोग करने का उचित तरीका

मैं नौसिखिए वेब प्रोग्रामर हूं इसलिए कृपया मुझे माफ कर दो अगर मेरी कुछ "शब्दजाल" सही नहीं है। मुझे एएसपी.नेट का उपयोग कर एक प्रोजेक्ट मिल गया है जो कि एमवीसी 3 फ्रेमवर्क का उपयोग कर रहा है।

मैं एक व्यवस्थापक दृश्य पर काम कर रहा हूं जहां व्यवस्थापक उपकरण की एक सूची को संशोधित करेगा। फ़ंक्शन में से एक एक "अपडेट" बटन है जिसे मैं एमवीसी नियंत्रक के लिए एक पोस्ट भेजने के बाद वेब पेज पर एंट्री को गतिशील रूप से संपादित करने के लिए jquery का उपयोग करना चाहता हूं।

मैं मानता हूं कि इस दृष्टिकोण को एक ही व्यवस्थापक सेटिंग में "सुरक्षित" है, जहां डेटाबेस से सिंक के बाहर आने वाले वेबपेज की कम चिंता है।

मैंने एक दृष्य बनाया है जो दृढ़ता से टाइप किया गया है और एक AJAX पोस्ट का उपयोग करके मॉडल डेटा को MVC नियंत्रण में पार करने की उम्मीद कर रहा था।

निम्न पोस्ट में, मुझे कुछ मिला जो कि मैं क्या कर रहा हूं जैसा है: JQuery Ajax और ASP.NET MVC3 शून्य पैरामीटर पैदा कर रहा है

मैं उपरोक्त पोस्ट से कोड नमूना का उपयोग करूँगा।

आदर्श:

public class AddressInfo { public string Address1 { get; set; } public string Address2 { get; set; } public string City { get; set; } public string State { get; set; } public string ZipCode { get; set; } public string Country { get; set; } } 

नियंत्रक:

 public class HomeController : Controller { public ActionResult Index() { return View(); } [HttpPost] public ActionResult Check(AddressInfo addressInfo) { return Json(new { success = true }); } } 

स्क्रिप्ट देखें में:

 <script type="text/javascript"> var ai = { Address1: "423 Judy Road", Address2: "1001", City: "New York", State: "NY", ZipCode: "10301", Country: "USA" }; $.ajax({ url: '/home/check', type: 'POST', data: JSON.stringify(ai), contentType: 'application/json; charset=utf-8', success: function (data.success) { alert(data); }, error: function () { alert("error"); } }); </script> 

मुझे अभी तक ऊपर का उपयोग करने का मौका नहीं मिला है। लेकिन मैं सोच रहा था कि क्या यह मॉडल डेटा को एमजेवीसी नियंत्रण के लिए AJAX का उपयोग करने के लिए "सर्वोत्तम" विधि था?

क्या मुझे मॉडल की जानकारी को उजागर करना चाहिए?

वेब के समाधान से एकत्रित समाधान "जोरदार टाइप किए गए MVC3 दृश्य से मॉडल पास करने के लिए jquery में AJAX पोस्ट का उपयोग करने का उचित तरीका"

आप वैर घोषणा और तार को छोड़ सकते हैं। अन्यथा, यह सिर्फ ठीक काम करेगा।

 $.ajax({ url: '/home/check', type: 'POST', data: { Address1: "423 Judy Road", Address2: "1001", City: "New York", State: "NY", ZipCode: "10301", Country: "USA" }, contentType: 'application/json; charset=utf-8', success: function (data) { alert(data.success); }, error: function () { alert("error"); } }); 

मुझे इसे लागू करने के 3 तरीके मिले:

सी # वर्ग:

 public class AddressInfo { public string Address1 { get; set; } public string Address2 { get; set; } public string City { get; set; } public string State { get; set; } public string ZipCode { get; set; } public string Country { get; set; } } 

क्रिया:

 [HttpPost] public ActionResult Check(AddressInfo addressInfo) { return Json(new { success = true }); } 

जावास्क्रिप्ट आप इसे तीन तरीकों से कर सकते हैं:

1) क्वेरी स्ट्रिंग:

 $.ajax({ url: '/en/Home/Check', data: $('#form').serialize(), type: 'POST', }); 

डेटा यहाँ एक स्ट्रिंग है

"Address1=blah&Address2=blah&City=blah&State=blah&ZipCode=blah&Country=blah"

2) ऑब्जेक्ट अर्रे:

 $.ajax({ url: '/en/Home/Check', data: $('#form').serializeArray(), type: 'POST', }); 

डेटा यहां कुंजी / मान जोड़े की एक सरणी है:

 =[{name: 'Address1', value: 'blah'}, {name: 'Address2', value: 'blah'}, {name: 'City', value: 'blah'}, {name: 'State', value: 'blah'}, {name: 'ZipCode', value: 'blah'}, {name: 'Country', value: 'blah'}] 

3) JSON:

 $.ajax({ url: '/en/Home/Check', data: JSON.stringify({ addressInfo:{//missing brackets Address1: $('#address1').val(), Address2: $('#address2').val(), City: $('#City').val(), State: $('#State').val(), ZipCode: $('#ZipCode').val()}}), type: 'POST', contentType: 'application/json; charset=utf-8' }); 

डेटा यहां एक सीरियल की गई JSON स्ट्रिंग है। ध्यान दें कि नाम सर्वर में पैरामीटर नाम से मेल खाना है !!

 ='{"addressInfo":{"Address1":"blah","Address2":"blah","City":"blah","State":"blah", "ZipCode", "blah", "Country", "blah"}}' 

यह मेरे लिए काम करने का तरीका है:

 $.post("/Controller/Action", $("#form").serialize(), function(json) { // handle response }, "json"); [HttpPost] public ActionResult TV(MyModel id) { return Json(new { success = true }); } 

आपके पास क्या ठीक है – हालांकि कुछ टाइपिंग सहेजने के लिए, आप बस अपने डेटा के लिए उपयोग कर सकते हैं


 डेटा: $ ('# formId')। सीरियलाइज़ ()

विवरण के लिए http://www.ryancoughlin.com/2009/05/04/how-to-use-jquery-to-sialialize-ajax-forms/ देखें, वाक्यविन्यास बहुत बुनियादी है।

MVC 5 का उपयोग करते हुए इस समाधान को पढ़ें!

मुझे पता है कि विशेष रूप से MVC 3 के लिए कहा गया प्रश्न, लेकिन मैंने इस पृष्ठ पर एमवीसी 5 के साथ ठोकर खाई और मेरी स्थिति में किसी और के लिए समाधान पोस्ट करना चाहता था। मैंने ऊपर दिए गए समाधानों की कोशिश की, लेकिन उन्होंने मेरे लिए काम नहीं किया, एक्शन फ़िल्टर कभी नहीं पहुंचा था और मैं समझ नहीं पाया कि क्यों मैं अपनी प्रोजेक्ट में संस्करण 5 का उपयोग कर रहा हूं और निम्न क्रिया फ़िल्टर के साथ समाप्त हुआ हूं:

 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Filters; namespace SydHeller.Filters { public class ValidateJSONAntiForgeryHeader : FilterAttribute, IAuthorizationFilter { public void OnAuthorization(AuthorizationContext filterContext) { string clientToken = filterContext.RequestContext.HttpContext.Request.Headers.Get(KEY_NAME); if (clientToken == null) { throw new HttpAntiForgeryException(string.Format("Header does not contain {0}", KEY_NAME)); } string serverToken = filterContext.HttpContext.Request.Cookies.Get(KEY_NAME).Value; if (serverToken == null) { throw new HttpAntiForgeryException(string.Format("Cookies does not contain {0}", KEY_NAME)); } System.Web.Helpers.AntiForgery.Validate(serverToken, clientToken); } private const string KEY_NAME = "__RequestVerificationToken"; } } 

using System.Web.Mvc का using System.Web.Mvc और using System.Web.Mvc का using System.Web.Mvc.Filters करते using System.Web.Mvc नोट करें, नहीं http पुस्तकालयों (मुझे लगता है कि चीजों में से एक है जो एमवीसी v5 के साथ बदल गया है।)

इसके बाद बस अपने ऐक्शन (या कंट्रोलर) को फ़िल्टर करें [ValidateJSONAntiForgeryHeader] को लागू करें और उसे सही ढंग से कॉल करना चाहिए।

मेरे लेआउट पृष्ठ में ऊपर </body> मेरे पास @AntiForgery.GetHtml();

अंत में, मेरे रेज़र पेज में, मैं एजेक्स कॉल निम्नानुसार करता हूं:

 var formForgeryToken = $('input[name="__RequestVerificationToken"]').val(); $.ajax({ type: "POST", url: serviceURL, contentType: "application/json; charset=utf-8", dataType: "json", data: requestData, headers: { "__RequestVerificationToken": formForgeryToken }, success: crimeDataSuccessFunc, error: crimeDataErrorFunc });