2010-02-10 15 views
7

मेरे पास अनुरोध के लिए सर्वर से अतिरिक्त डेटा प्राप्त करने के लिए webMethod पर कॉल करने के लिए asp.net (non-mvc) के लिए AJAX कोड है। लेकिन मैं एमवीसी में अपने JQuery देने के लिए यूआरएल पता लगाने के लिए प्रतीत नहीं कर सकता।मैं JQuery से नियंत्रक विधि कैसे कॉल करूं?

<script type="text/javascript" language="javascript"> 
function SubmitAjax(url, message, successFunc, errorFunc) { 
    $.ajax({ 
     type:"POST", 
     url:url, 
     data:message, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success:successFunc, 
     error:errorFunc 
     }); 

}; 

मैं हर व्यक्ति कि पृष्ठ पर आता है करने के लिए एक का चयन करें सूची में संबंधित डेटा की पूरी सूची पारित करने के लिए, इस कार्यक्षमता बिल्कुल नहीं की आवश्यकता होगी के रूप में नहीं करना चाहती। इसलिए मैं JQuery के माध्यम से नियंत्रक या वेबमाइंड को कॉल करना चाहता हूं, लेकिन यह पता नहीं लगा सकता कि एमवीसी में यूआरएल को कैसे संबोधित किया जाए। JQuery Ajax call gets resolved to the current Controller Folder, Instead of root Folder

$ .getJson एक MVC विधि है:

मैं इस पोस्ट देखा? क्या यह मेरे उपयोग के मामले के लिए एक अच्छा समाधान है? मुझे केवल एक स्ट्रिंग यूआरएल, या खाली स्ट्रिंग को वापस करने की आवश्यकता है यदि मैं जो खोज रहा हूं वह नहीं मिला है। क्या मुझे $ .getJSon विधि के लिए एक शामिल करने की आवश्यकता है? क्या एमवीसी या JQuery का हिस्सा है? क्या प्रमुख स्लैश अनुप्रयोग रूट या सर्वर रूट पर इंगित करने जा रहा है?

+0

एमवीसी वास्तविक कार्य नामों के साथ एक विशिष्ट पुस्तकालय नहीं है। यह एक डिज़ाइन * पैटर्न * है ... जब तक कि माइक्रोसॉफ्ट ने वास्तव में ढांचे का नाम नहीं दिया ... जो वे हो सकते हैं, इसके बारे में सोचने के लिए आते हैं। मौलिकता उनके मजबूत सूट नहीं है। (गुगलिंग कि ...) - लेकिन बिंदु पर ... '$ .getJson' AJAX अनुरोधों के माध्यम से JSON डेटा लाने के लिए एक jQuery फ़ंक्शन है। नेट के साथ कुछ भी करने के लिए विशिष्ट नहीं है। – Atli

+0

एक यूआरएल हमेशा एक यूआरएल है। यह एएसपीएनटी एमवीसी में किसी भी तरह से काम नहीं करता है। –

+0

@Atli मुझे यकीन नहीं है कि आप किस भाग का जिक्र कर रहे हैं, शीर्ष पर मैं एएसपीनेट एमवीसी का जिक्र कर रहा था, नीचे मैं एएसपीनेट एमवीसी जावास्क्रिप्ट का जिक्र कर रहा था जो बंडल हुआ था। – Maslow

उत्तर

0

समस्या नियंत्रक पर WebMethod टैग था, कि जरूरत या asp.net में मददगार था, लेकिन asp.net MVC के में नहीं

3

इस पोस्ट का प्रयास करें: Basic AJAX example with ASP.NET MVC?

या इस एक: How to get the Json object for drop down?

वे आपको कुछ संकेत देना चाहिए।

संक्षेप में, $ .getJson एक jQuery विधि है, एमवीसी नहीं है, लेकिन इसका उपयोग अपने एमवीसी नियंत्रक के साथ एक जेसन परिणाम लौटने के साथ संयोजन में करना चाहते हैं।

+0

@ जोहान्स धन्यवाद यह मेरा यूआरएल है: '" टिकट/चेकफॉर इंस्टालर "' लेकिन मुझे नहीं मिला .. मेरी नियंत्रक कक्षा 'टिकट नियंत्रक 'विधि है [वेबमाइंड] सार्वजनिक सामग्री परिणाम चेकफोर इंस्टालर (int appId)' लेकिन वे' टी अस्तर – Maslow

+0

@ मास्लो आपको अपनी कार्रवाई के लिए उपयुक्त param आपूर्ति करने की आवश्यकता है। आपकी कार्रवाई "CheckForInstaller" है और इसके लिए "appId" की आवश्यकता है।यदि यह आपके मार्ग में पंजीकृत है, तो आप बस "टिकट/चेकफॉर इंस्टालर/1" ("1" को केवल ऐपआईडी का एक उदाहरण कह सकते हैं)। यदि पंजीकृत नहीं है, तो इस तरह होना चाहिए: "टिकट/चेकफॉर इंस्टालर? AppId = 1" –

+1

उदाहरण में वह POST का उपयोग कर रहा है, इसलिए "appId" एक पोस्ट पैरामीटर होना चाहिए (यूआरएल में दिखाई नहीं दे रहा है)। –

1

आप $ .getJSON (url, [data], [callback (डेटा)] का उपयोग कर सकते हैं) जहां डेटा आपके लौटे हुए जेसन डेटा ऑब्जेक्ट का उपयोग कर सकता है।

वैकल्पिक रूप से आप $ .post (url, [data], [callback (डेटा)] का उपयोग कर सकते हैं) जहां डेटा स्ट्रिंग/डेटा ऑब्जेक्ट को पुन: स्थापित किया जाता है।

यूआरएल: यह आपके नियंत्रक/एक्शन/स्क्रिप्ट के सापेक्ष यूआरएल है जो जेसन/डेटा वापस देता है।

उपरोक्त jquery विधियां हैं और यदि आप jquery js फ़ाइल शामिल करते हैं तो आप उपयोग करने में सक्षम होंगे।

2

ठीक है, मेरा अनुमान है कि आपको यूआरएल के निर्माण के तरीके में परेशानी हो रही है। यदि आपके पास यूआरएल से पहले स्लैश नहीं है तो यह आपके वर्तमान यूआरएल के सापेक्ष होगा। तो यदि वर्तमान यूआरएल है: /Home/Index और आपके पास इस तरह का एक लिंक है: <a href="Ticket/CheckForInstaller">Text</a> तो वह लिंक निम्न यूआरएल को इंगित करेगा: /Home/Index/Ticket/CheckForInstaller। यह ब्राउज़र में हमेशा व्यवहार है। वही बात होती है यदि आपके पास वेबफॉर्म एप्लिकेशन में किसी फ़ोल्डर में कोई पृष्ठ है। किसी अन्य वेब ढांचे के साथ एएसपीएनटी एमवीसी यूआरएल के साथ कुछ भी अलग नहीं है। यूआरएल जो आप चाहते हैं वह शायद यह है: /Ticket/CheckForInstaller

एएसपीनेट एमवीसी ढांचा, हालांकि, आपको मददगारों के साथ आपूर्ति करता है ताकि आपको किसी भी यूआरएल को हार्ड कोड नहीं करना पड़े। आप ऐसा कर सकते हैं इस तरह:

<%=Url.Action("Ticket", "CheckForInstaller")%> 

लेकिन केवल एक चीज यह कर देगा उचित यूआरएल उस कार्य को इंगित करता है लगता है ("/ टिकट/CheckForInstaller", अपने मार्गों पर निर्भर करता है) और इसे बाहर लिखें।

1

यह है कि मैं क्या हाल ही में कर रहा हूँ, और यह ठीक काम कर रहा गया है ।

  1. रूट पथ हो जाओ और एक छिपा इनपुट में संग्रहीत (की जगह [< के साथ)

    [इनपुट आईडी = "urlBase" type = "छिपा" मान = "<% = Url.Content ("~")%> "/>

  2. कि इनपुट का मूल्य प्राप्त करें और (जे एस में संग्रहीत इस मामले में jQuery का उपयोग)

    _urlBase = $ (" # urlBase ") वैल()।;

  3. नियंत्रकों

    $ .ajax कॉल करने के लिए है कि चर का उपयोग करें ({प्रकार: "GET", यूआरएल: _urlBase + "नियंत्रक/कार्रवाई", डेटाप्रकार: "json"});

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

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