2011-12-20 21 views
7

Sitemde, ana sayfamda bulunan tüm sayfalarda bir işlev var ve bazı jQuery Ajax yöntemlerinden çalıştırılmasını istiyorum.Web sayfalarını web sayfalarıyla kullanma

Usta sayfasında şu

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); 
     } 
    }); 
    }); 
}); 

HTML bu gibi bazı kod var benim Usta VB

Asp.Net kod arkasında

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

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

Curre Ben Default.aspx VB sayfa

web yöntemini taşımadığınız sürece ntly bu ben bu bölümü

url: "Default.aspx/GetDate", 

ana sayfa işlevini kullanmak için değiştirebileceğiniz bir yolu var mı çalışmıyor?

Ben

url: "template.master/GetDate", 

değiştirmeyi denedim Ama bu sadece bana bir 404 hatası

Herhangi bir fikir verir? peşin

Teşekkür

cevap

9

Kişisel webmethod kodu ana sayfa için codebehind içinde yer alamaz.

Projemde birden fazla sayfadan aramam gerekecek şeyler için gerçek bir web hizmeti veya WCF hizmeti eklemeyi daha kolay buldum.

DÜZENLEME: (. Yani Agent.svc):

projenize bir WCF hizmeti eklemek için

  1. sağ projeyi
  2. seçmek [WCF Servisi] tıklayıp bir isim vermek
  3. Stackover burada bir kaç örnekle daha

daha (http://www.codeproject.com/KB/aspnet/jQuery_To_WCF.aspx bakınız) hizmetini kurmak akış ...

Bu yardımcı olur umarım.

+1

+1 Sadece bir WCF hizmeti ekleme hakkında gitmek nasıl tamamen emin değilim bu – Erix

+0

için bir ajax etkin wcf hizmeti eklemek benim proje? –

+0

@Jamie Taylor: eklediğim güncellemeye bakın ... – ShaneBlake

3

Webmethod'u bir temel sınıfta yerleştirmeye ne dersiniz? Bu sınıfı, webmethod'u ifşa etmek istediğiniz sayfalardan devralabilirsiniz. Daha sonra, bu sınıfı webmethod'u ifşa etmek istediğiniz sayfalardan devralırsınız.

Karışık C# ve VB için beni affet, VB sözdizimini bilmiyorum.

+2

Eğer bir taban notu eklerseniz, o zaman bu işlevi AJAX içinden nasıl kullanabilirim? –

1

Yukarıda belirtildiği gibi, Base Class yöntem yoluna gidebilirsiniz.

emin olun:

  • webmethod statiktir.
  • Ajax görüşmenizde, görüntülemekte olduğunuz sayfaya dayalı olarak URL'yi dinamik olarak değiştirin. Böyle bir şey:

(Ajax aramak :)

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

Bu genellikle iyi bir metodolojidir. Ancak, ana sayfanın sadece http: // example.com/'olduğu siteler için, url 'null' olacaktır. Veya varsayılan belgeyi açıkça içermeyen başka alt yollar. –

İlgili konular