2010-12-21 10 views
6

Ich habe eine Menge gelesen, um dies zu erreichen, und es scheint ziemlich einfach zu sein. Ich meinen Dienst geschaffen, die sehr einfach ist (sieht aus wie diesesAufruf von AJAX-aktiviertem WCF-Dienst von jQuery - MVC 2

[ServiceBehavior(IncludeExceptionDetailInFaults = true)] 
[ServiceContract(Namespace = "")] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public class WeddingPhotographerService 
{  
    // Add more operations here and mark them with [OperationContract] 
    [OperationContract] 
    public bool AddNewSkill(string name, string description) 
    { 
     IRepository<Skill> skillRepo = ObjectFactory.GetInstance<IRepository<Skill>>(); 

     var skill = new Skill { Name = name, Description = description }; 
     skillRepo.Save(skill); 
     return true; 
    } 
} 

Einfach genug rechts, dann aufzuschreiben ich diesen jQuery-Code in meiner Ansicht

$(document).ready(function() { 
    $("#AddSkill").click(function() { 
     var data = { name: $("#NewSkill").val(), description: "" }; 
     data = JSON.stringify(data) 
     $.ajax({ 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      url: "WeddingPhotographerService.svc/AddNewSkill", 
      data: data, 
      dataType: "json", 
      success: function() { 
       $('#SkillListViewContainer').load('../AccountController/GetSkillControl'); 
      }, 
      error: function (msg) { 
       $("#AddSkillError").text(msg.d); 
      } 
     }); 
    }); 
}); 

Mein WeddingPhotographerService.svc ist in der Wurzel des Projekts, die web.config hat dieses Bild, wenn ich den Dienst erstellt

<system.serviceModel> 
    <behaviors> 
    <endpointBehaviors> 
     <behavior name="WeddingPhotographer.WeddingPhotographerServiceAspNetAjaxBehavior"> 
     <enableWebScript /> 
     </behavior> 
    </endpointBehaviors> 
    </behaviors> 
    <services> 
    <service name="WeddingPhotographer.WeddingPhotographerService"> 
     <endpoint address="" behaviorConfiguration="WeddingPhotographer.WeddingPhotographerServiceAspNetAjaxBehavior" 
     binding="webHttpBinding" contract="WeddingPhotographer.WeddingPhotographerService" /> 
    </service> 
    </services> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
    multipleSiteBindingsEnabled="true" /> 
</system.serviceModel> 

Alles einfach genug scheint und scheint es funktionieren sollte aber Wenn ich auf die AddSkill Chrome JavaScript-Konsole klicke, wird ein Fehler 404 zurückgegeben, so dass der Dienst überhaupt nicht gefunden wird (ich öffnete die Konsole, weil überhaupt nichts passierte, wenn ich auf den Button klicken würde).

Fehle ich hier etwas?

By the way, ich habe auch versucht, diese (da, dass der Name in der Datei web.config ist)

url: "WeddingPhotographer.WeddingPhotographerService.svc/AddNewSkill" 

Und ich immer noch die Ressource nicht gefunden (404) Fehler

+0

Wie wäre es, wenn Ihre "WeddingPhotographerService.svc" in einem anderen Projekt befindet, wie werden Sie dies nennen? Ich habe dieses Szenario, ich hoffe du könntest mir helfen. – fiberOptics

Antwort

4

gelöst bekommen es änderte sich die url Linie in der jQuery AJAX-Aufruf zu

url: "../WeddingPhotographerService.svc/AddNewSkill" 

Und alles ist gut

Verwandte Themen