从 jQuery 调用启用 AJAX 的 WCF 服务 - MVC 2
Posted
技术标签:
【中文标题】从 jQuery 调用启用 AJAX 的 WCF 服务 - MVC 2【英文标题】:Calling AJAX-Enabled WCF Service from jQuery - MVC 2 【发布时间】:2011-05-29 00:58:53 【问题描述】:我已经阅读了大量关于实现这一点的内容,而且看起来很简单。我创建了我的服务,非常简单(看起来像这样
[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;
够简单吧,那我把这个jQuery代码写在我的视野里
$(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);
);
);
);
我的 WeddingPhotographerService.svc 在项目的根目录中,web.config 在我创建服务时添加了这个
<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>
一切看起来都很简单,看起来应该可以工作,但是当我单击 AddSkill 时,Chrome javascript 控制台会返回 404 错误,所以它根本找不到服务(我打开控制台是因为当我点击按钮时,什么都没有发生。
我错过了什么吗?
顺便说一句,我也试过这个(因为这是 web.config 文件中的名称)
url: "WeddingPhotographer.WeddingPhotographerService.svc/AddNewSkill"
我仍然收到 Resource Not Found (404) 错误
【问题讨论】:
如果您的“WeddingPhotographerService.svc”位于其他项目中,您将如何称呼它?我有这种情况,希望你能帮助我。 【参考方案1】:解决了,将jQuery AJAX调用中的url行改为
url: "../WeddingPhotographerService.svc/AddNewSkill"
一切都很好
【讨论】:
以上是关于从 jQuery 调用启用 AJAX 的 WCF 服务 - MVC 2的主要内容,如果未能解决你的问题,请参考以下文章
启用从 jQuery ajax 到不在 IIS 中托管的 WCF 服务的 CORS POST
从 jQuery AJAX 调用 WCF 服务方法返回 404
使用 POST 方法从 jQuery Ajax 调用 WCF 服务
使用 jQuery/Ajax 从 JavaScript 调用 WCF/JSON/REST WebService