Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > ASP.NET 3.x > Språk - Övriga språk

jQuery med .NET - Service is not defined

pbf
pbf

Gradering

#13529

Tjänare!

Jag har likt många andra fått upp ögonen för javascriptbiblioteket jQuery. Idag tänkte jag testa anropa en webservice som ser ut såhär och heter Service.svc ( och har en *.cs-fil i App_Code ):

[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service
{
  [OperationContract]
    public Person GetPerson()
    {
  return new Person() { PersonId = 1, FirstName = "Mark", LastName = "Hughes" };
    }
}




Min Person-klass ser ut som följer:

using System.Runtime.Serialization;

[DataContract]
public class Person {
  [DataMember]
  public int PersonId { get; set; }
  [DataMember]
  public string FirstName { get; set; }
  [DataMember]
  public string LastName { get; set; }
}


Min JavaScript-kod ser ut såhär:

  function pageLoad() {
  J("#button1").bind('click', function(event) { Service.GetPerson(onSuccess); });
  }

  function onSuccess(result) {
  
  J("#results").hide().html(result.PersonId + ' ' +
  result.FirstName + ' ' + result.LastName).show(500);
  }


Följande felmeddelande uppstår:

Service is not defined


Och xhtml-koden är det inget fel på. Felet uppstår när man klickar på "button1". Om ni undrar varför det står J istället för $ så beror detta på att jag använder prototype som också använder "$". Därför har jag lagt in en kod (som ersätter $ med J) för att undvika konflikter biblioteken emellan.

Jag har lagt en ScriptReference i min ScriptManager till Service.svc.

Var ska jag börja felsöka?




Redigerad av voigtan
Anledning: Ändrade rubrik samt flyttat till .NET då det är mer ett .NET relaterat en ren Javascripts lösning

life is short, enjoy it!
ID: #13529 | Skapades: 2008-11-26 18:11:57 | Tråden har 2 svar och har lästs 468 gånger.

voigtan
voigtan

Gradering

#13530

Service is not defeined får jag som ett FireFox meddelande?

Service är ett .NET objekt om jag också inte missförstå dig.  Du måste göra något typ av ajax anrop och den kommer förmodligen retunera en JSON data tillbaka där du kan använda dig av.



Redigerad av voigtan
Anledning:

Gjorde en sökning och det visar sig att det finns lite trevliga saker:

http://www.hanselman.com/blog/jQuer...sualStudio.aspx

Citat:

  1.     function LoadBikes(q) {  
  2.             q = q || "Red";  
  3.             var svc = new Sys.Data.DataService("bikes.svc");  
  4.             svc.query("/Products?$filter=Color eq '" + q + " '&$top=5", OnProductsLoaded);  
  5.         } 

Läs där och se om det hjälper dig.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #13530 | Skapades: 2008-11-26 18:41:58

pbf
pbf

Gradering

#13537

Tack för trådflyttning och rubrikändring, detta borde jag ju förutsett.

Tack för svaret. Testar runt just nu. Använder detta JavaScript:

J(document).ready(function () {
  J("#button1").bind('click', function(event) {
  J.ajax({
  url: 'Services/Personas.asmx/GetPersons',
  type: 'get',
  success: function(result) {
  var r = J.extend({PersonId: '', FirstName: '', LastName: ''}, result);
  J("#results").hide().html(r.PersonId + ' ' + r.FirstName + ' ' + r.LastName).show(500);
  }
  });
  })


Och denna web service:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class Personas : System.Web.Services.WebService {

  public class Person {
  public int PersonId { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }
  }

  [WebService(Namespace = "Test")]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  public class PersonManager {
  [WebMethod(Description = "Returns a list of persons.")]
  public List<Person> GetPersons() {
  List<Person> p = new List<Person>();

  p.Add(new Person { PersonId = 1, FirstName = "Flesh", LastName = "Bone" });
  p.Add(new Person { PersonId = 2, FirstName = "Layzie", LastName = "Bone" });

  JavaScriptSerializer serializer = new JavaScriptSerializer();

  return serializer.Serialize(p);

  }
  }
}


Här får jag felmeddelandet:
Cannot implicitly convert type 'string' to 'System.Collections.Generic.List<Personas.Person>'

Det är ju för jag inte vet hur jag returnerar en JSON-sträng, kan nån hjälpa mig med det?

life is short, enjoy it!
ID: #13537 | Skapades: 2008-11-27 10:22:14
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy