调用WCF服务时JQuery.Post抛出错误

时间:2012-02-26 09:42:05

标签: jquery

我写了一个WCF服务,它接受一个字符串并返回一个字符串。当我从我的javascript调用它时,它会导致显示错误警报。

我已经尝试过阅读API并且不确定我做错了什么或如何显示实际的错误消息。

这是我的javascript:

var path = "http://localhost:15286/Service.svc/SubmitTest?url=" + encodeURIComponent(info.srcUrl);
var jqxhr = $.post(path, function() {

  alert("success");
})
.success(function() { alert("second success"); })
.error(function(oEvent) { alert("error"); })
.complete(function() { alert("complete"); });
};

我在调用它时通过调试器观察了该服务,并且它正在返回字符串“Hello World”而没有错误,所以我认为我的问题是在javascript端。

WCF服务:

 [ServiceContract]
public interface IService
{
    [WebInvoke(UriTemplate = "/Submit?input={value}")]
    [OperationContract]
    string Submit(string value);
}

public class Service : IService
{
    public string Submit(string input)
    {
      return "hello world";
}

2 个答案:

答案 0 :(得分:0)

使用dataType参数,如果服务返回“Hello World”,则dataType为“text”:

var jqxhr = $.post(path, function() {

  alert("success");
}, "text") // <====
.success(function() { alert("second success"); })
.error(function(oEvent) { alert("error"); })
.complete(function() { alert("complete"); });
};
  

dataType服务器所需的数据类型。默认值:智能猜测(xml,json,脚本,文本,html)。

很多时候猜测不是太“智能”......

答案 1 :(得分:0)

您可能会遇到跨域问题尝试添加

Headers.Add("Access-Control-Allow-Origin", "*");

在服务中说响应看起来像

var Response = new HttpResponseMessage<string>("hello world");
Response.Headers.Add("Access-Control-Allow-Origin", "*");
return Response ;