2011-09-20 12 views
5

मैं इस तरह एक AJAX कॉल करने की कोशिश कर रहा हूं:क्या मैं jQuery.get का उपयोग करते समय सापेक्ष यूआरएल निर्दिष्ट कर सकता हूं?

 $.get('/home/myInfo', function (data) 

    { 

     .... 

    }); 

मैं इसे उस पृष्ठ से कॉल कर रहा हूं जो: http://localhost/myapp/home/index

जब मैं उपरोक्त कॉल करने का प्रयास करता हूं, तो यह जाता है : http://localhost/myapp/home/index/home/myInfo

मैं इसे http://localhost/myapp/home/myInfo

पर जाना चाहता हूं क्या मुझे पूर्ण यूआरएल निर्दिष्ट करना है?

+0

क्या आपने बस "myInfo" या "../myInfo" के साथ प्रयास किया? –

+0

मैंने myInfo की कोशिश की तो मुझे http: // localhost/myapp/home/index/myinfo –

उत्तर

14

एएसपी.नेट एमवीसी अनुप्रयोग में बिल्कुल इस तरह के हार्डकोड को कभी भी हार्डकोड नहीं करते हैं। हमेशा इस तरह यूआरएल सहायकों का उपयोग करते हैं यूआरएल के साथ काम कर,:

$.get('@Url.Action("MyInfo", "Home")', function (data) { 
    .... 
}); 

या अगर यह एक अलग JavaScript फ़ाइल में है आप सर्वर साइड सहायकों का उपयोग नहीं कर सकते हैं, अच्छी तरह से आप उदाहरण उपयोग HTML के लिए 5 डेटा- * कुछ पर जिम्मेदार बताते हैं सकता है डोम तत्व जैसे आप AJAXifying कर रहे हैं, एक div या कुछ और की तरह:

<div id="mydiv" data-url="@Url.Action("MyInfo", "Home")">Click me</div> 

और उसके बाद:

$('#mydiv').click(function() { 
    $.get($(this).data('url'), function (data) { 
     .... 
    }); 
}); 

या आप एक फार्म या एक लंगर AJAXifying रहे हैं:

$('#myanchor').click(function() { 
    $.get(this.href, function (data) { 
     .... 
    }); 
    return false; 
}); 

जहां लंगर होगा निश्चित रूप से उत्पन्न हो रही हैं का उपयोग कर सहायकों:

@Html.ActionLink("click me", "MyInfo", "Home", null, new { id = "myanchor" }) 

देखते हैं? हार्डकोड यूआरएल की जरूरत नहीं है। ऐसा न करें क्योंकि यह Global.asax में आपके मार्गों के पैटर्न को संशोधित करने वाले दूसरे स्थान पर टूट जाएगा। इस तकनीक का पालन करके आपका कोड आपके मार्गों की संरचना के किसी भी बदलाव के लिए पूरी तरह से अज्ञेयवादी होगा।

+0

आह हाँ, मुझे पता था कि एक बेहतर तरीका होना चाहिए। धन्यवाद। –

+3

डाउनवोट के लिए कोई कारण? इसके पीछे तर्क बताते समय कृपया एक टिप्पणी छोड़ दें। –

+1

डब्लूआरटी हार्डकोडिंग यूआरएल: यह हमेशा मुझे निराश करता है कि ओओबी सहायक विधियां इंटेलिजेंस-जागरूक नहीं हैं। "माईइन्फो" और "होम" हमेशा जादू तार होते हैं। ReSharper इसके साथ मदद करता है, लेकिन अभी भी असंबद्ध कार्रवाई यूआरएल होने की संभावना छोड़ देता है – JoeBrockhaus

0

क्या आप वाकई कोड कॉपी और पेस्ट कर चुके हैं? क्योंकि आपके पास यह है, इसे http://localhost/home/myInfo का संदर्भ देना चाहिए। एकमात्र कारण मैं के रूप में आप का वर्णन किया है यह कर देख सकते हैं यदि आपके कोड इस तरह एक रिश्तेदार यूआरएल का उपयोग कर किया गया है: अन्यथा

$.get('home/myInfo', function (data) 

    { 

     .... 

    }); 

, यदि आप वास्तव में मूल्य का उपयोग कर रहे "/ घर/myInfo" के बजाय "की घर/myInfo ", आप पहले से ही यूआरएल के पूर्ण संस्करण (" पूर्ण "यूआरएल की परिभाषा को संदर्भित कर रहे हैं जो यह"/"से शुरू होता है)। मैंने कुछ त्वरित परीक्षण चलाए, और मेरी स्थानीय मशीन पर, "/ home/myInfo" का उपयोग करके एक्सएचआर अनुरोध http://localhost/home/myInfo

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

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