Sök på tekniken.nu

Om tekniken.nu

På tekniken.nu bloggar Iteams konsulter om det som ligger dem varmast om hjärtat - teknik.
www.iteam.se

Prenumerera på tekniken.nu

Bloggportalen.se
Bloggtoppen.se
Top Datorer bloggar
Web Analytics

Clicky

En självklarhet!
Teknikbloggen logotype

jQuery del 3: jQuery och AJAX med WCF

2009-10-02 11:27 - Utvecklingstips av Tommy Söderström
Tommy Söderström
Tommy Söderström
Systemutvecklare
Iteam

Kombinationen jQuery och WCF (Windows Communications Foundation) som AJAX-lösning fungerar alldeles utmärkt och ger enkel och ren kod på både klient och serversidan. Den här bloggen handlar om hur man sätter upp detta på ett enkelt och snabbt sätt.

När man skapar en WCF-service fylls web.config på massa onödigt som gör felsökning och ändring svårare än vad det behöver vara, så här följer ett exempel på det minsta behövs för att få AJAX-funktionaliteten att fungera. (Servicen kallas här "Example" och "Namespace" är servicens namespace)

<system.serviceModel>
	<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
	<services>
	  <service name="Namespace.Example" behaviorConfiguration="ExampleAspNetAjaxBehavior">
		<endpoint address="Ajax" binding="webHttpBinding" contract="Namespace.Example" behaviorConfiguration="ExampleEndpointBehavior" />
	  </service>
	</services>
	<behaviors>
	  <serviceBehaviors>
		<behavior name="ExampleAspNetAjaxBehavior">
		  <serviceMetadata httpGetEnabled="true" />
		  <serviceDebug includeExceptionDetailInFaults="true"/>
		</behavior>
	  </serviceBehaviors>
	  <endpointBehaviors>
		<behavior name="ExampleEndpointBehavior">
		  <webHttp/>
		</behavior>
	  </endpointBehaviors>
	</behaviors>
</system.serviceModel>

Javascript-anropen ser då ut ungefär som nedan i sin enklaste form. Det enda kriteriet är att sidan länkat in den vanliga jQuery-filen (56 kb okomprimerad vilket kommer att cachas efter första sidladdningen), detta i motsats till många andra ramverk som kräver att det laddas in flera JavaScript-filer som sköter snacket med servern.

$.getJSON("/WCF/Example.svc/ajax/GetItem?id=" + id, null, function(data) {
    alert(data); //data är i detta fall en bool så svaret kommer att bli true
});

I svc-filen så måste metoderna som skall användas taggas upp såhär så de serialiseras korrekt till och från json:

[OperationContract]
[WebInvoke(Method="GET", BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat=WebMessageFormat.Json)]
public bool GetItem(int id)
{
  return true;
}

Givetvis finns det saker som kan strula som t.ex. datum som får ett format som inte är JavaScript-kompatibelt. Lösningen på datumformatet är att man får konvertera detta manuellt innan man använder det.

function parseNetDate(date) 
{
   if (date)
       return new Date(parseInt(date.slice(6, 19)));
     else
       return null;
}

I nästa del, d.v.s. den sista, i jQuery-serien kommer jag att gå igenom några användbara plugins som jag funnit .

... och du vet väl att Iteam just nu söker duktiga medarbetare? Läs mer på iteam.se

Andra bloggar om:
Inga kommentarer

Kommentera

Namn

Email

URL

Kommentar

Skriv vad som står i bilden till höger