2011-12-20 16 views
7

मुझे अपने मास्टर पेज में स्थित सभी साइटों पर एक फ़ंक्शन मिला है और मैं इसे कुछ jQuery अजाक्स विधि से चलाने के लिए चाहता हूं।मास्टर पेजों के साथ वेब विधियों का उपयोग

मैं पल मास्टर पेज में

jQuery

$(document).ready(function() { 
    $("#test").click(function() { 
    $.ajax({ 
     type: "POST", 
     url: "Default.aspx/GetDate", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 
     $("#test").text(msg.d); 
     } 
    }); 
    }); 
}); 

एचटीएमएल में इस तरह की कुछ कोड मिल गया है

<div id="test">Click here for the time.</div> 

Asp.Net कोड के पीछे मेरे गुरु VB में

<WebMethod> _ 
Public Shared Function GetDate() As String 
    Return DateTime.Now.ToString() 
End Function 

Curre ntly यह काम नहीं करता जब तक कि मैं Default.aspx वीबी पेज

करने के लिए वेब विधि के लिए कदम वहाँ एक रास्ता मैं इस हिस्से

url: "Default.aspx/GetDate", 

मास्टर पृष्ठ फ़ंक्शन का उपयोग करने को बदल सकते हैं है?

मैं

url: "template.master/GetDate", 

में बदलने की कोशिश की लेकिन यह सिर्फ मुझे एक 404 त्रुटि

कोई भी विचार देता है?

अग्रिम धन्यवाद

उत्तर

9

आपका webmethod कोड आपके मास्टर पृष्ठ के लिए codebehind में रहते हैं नहीं कर सकते।

मुझे अपने प्रोजेक्ट में एक वास्तविक वेब सेवा या डब्ल्यूसीएफ सेवा शामिल करना आसान लगता है, जिसके लिए मुझे कई पृष्ठों से कॉल करने की आवश्यकता होगी।

संपादित करें:

अपने प्रोजेक्ट में कोई WCF सेवा जोड़ने के लिए: (। यानी Agent.svc)

  1. सही परियोजना
  2. का चयन करें [WCF सेवा] क्लिक करें और इसे एक नाम दे
  3. सेवा की स्थापना की (http://www.codeproject.com/KB/aspnet/jQuery_To_WCF.aspx देखें) Stackover पर यहाँ कुछ उदाहरण से

अधिक प्रवाह ...

उम्मीद है कि मदद करता है।

+1

+1 सिर्फ इस – Erix

+0

के लिए एक ajax सक्षम WCF सेवा जोड़ने मैं पूरी तरह यकीन है कि में एक WCF सेवा जोड़ने के बारे में जाने के लिए कैसे नहीं कर रहा हूँ मेरी परियोजना? –

+0

@ जैमी टेलर: मैंने जो अपडेट जोड़ा है उसे देखें ... – ShaneBlake

3

वेब क्लास को बेस क्लास में डालने के बारे में कैसे?

public class WebMethodBase : Page 
{ 
    <WebMethod> _ 
    Public Shared Function GetDate() As String 
     Return DateTime.Now.ToString() 
    End Function 
} 

फिर उन पृष्ठों से इस वर्ग का उत्तराधिकारी करें जिन्हें आप वेबमाइड का पर्दाफाश करना चाहते हैं।

मिश्रित सी # और वीबी के लिए मुझे क्षमा करें, मैं वीबी वाक्यविन्यास से परिचित नहीं हूं।

+2

यदि मैं बेसक्लास जोड़ता हूं तो मैं AJAX से उस फ़ंक्शन का उपयोग कैसे करूं? –

1

आप ऊपर वर्णित एंड्रियास के रूप में बेस क्लास विधि मार्ग जा सकते हैं।

सुनिश्चित करें:

  • webmethod स्थिर है।
  • अपने अजाक्स कॉल में, जो पेज आप देख रहे हैं उसके आधार पर यूआरएल को गतिशील रूप से बदलें। कुछ इस तरह:

(अजाक्स में फोन :)

url: window.location.pathname.substr(1) + "/GetDate" 
+0

यह आम तौर पर एक अच्छी पद्धति है। हालांकि, उन साइटों के लिए जहां होमपेज सिर्फ 'http: // example.com/'है, यूआरएल' शून्य 'होगा। या कोई अन्य उप-पथ जिसमें डिफ़ॉल्ट दस्तावेज़ को स्पष्ट रूप से शामिल नहीं किया गया है। –