我有一个WCF服务(称为"myservice.svc"),它接收来自用户的消息并将其保存到数据库.它以数字的形式向用户返回响应.此操作如下所示:
[OperationContract]
[WebGet]
public string SubmitMessage(string message)
{
try
{
// SAVE TO DATABASE
return "1";
}
catch (Exception ex)
{
return "0";
}
}
Run Code Online (Sandbox Code Playgroud)
我想从一些JQuery调用此操作.我正在使用此处显示的方法:
$.getJSON(
"/services/myService.svc",
{message:"some text"},
function (data) {
alert("success");
}
);
Run Code Online (Sandbox Code Playgroud)
奇怪的是,永远不会显示"成功"警报.另外,我在我的WCF服务中设置了一个断点,它永远不会被触发.我究竟做错了什么?
谢谢
那WebGet
应该不存在,你不应该使用jQuery getJSON
函数.此方法修改数据库; 这是一种POST
方法,而不是GET
.
有关创建方法的示例,请参阅此页面POST
.主要是它涉及将这些标题添加到方法:
[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.Wrapped,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
Run Code Online (Sandbox Code Playgroud)
您还需要确保从jQuery正确地进行调用,其中包括设置contentType
和其他字段; 你进行调用的方式实际上是无效的,你只是将原始文本传递给方法,而不是有效的查询字符串或有效的JSON.
此外,您使用的是错误的网址; 如果您不希望发布到端点,则需要发布到特定方法,您必须将其附加到URL.同样,链接页面应该有助于解释所有这些.
这是一个正确的jQuery Ajax帖子的示例:
$.ajax({
url: "/services/myservice.svc/SubmitMessage",
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{ \"message\": \"test\" }",
dataType: "json",
success: function(data) {
// do something
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1228 次 |
最近记录: |