我正在尝试对WCF休息服务进行跨域POST。以下是我获取请求的服务代码
[WebInvoke(UriTemplate = "", Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public SampleItem Create(SampleItem instance)
{
instance.StringValue += " -success";
return instance;
}
在客户端,我有以下jquery ajax调用
var input = { "Id": 10, "StringValue": "Test Value" };
$("#post").click(function () {
$.ajax({
type: "POST",
url: "http://localhost:50577/Service1/",
dataType: "jsonp",
data: JSON.stringify(input),
processData: false,
success: function(item) {
$("#itemId").val(item.Id);
$("#name").val(item.StringValue);
},
error: function(xhr) {
alert("error " + xhr.responseText);
}
});
当我在服务器端调试代码时,请求将转到方法但实例参数为null。在同一个项目中,我有一个跨域get,它没有任何问题。 如果我将客户端更改为在同一个域中并将数据类型更改为json,则可以正常工作。
跨域发布是不可能的?或者还有什么我需要做的才能让这个工作。
答案 0 :(得分:0)
您回答了第一个问题,因为您可以调试服务!
AJAX调用的JSON输入格式不正确。试试这个:
...
data: JSON.stringify({instance : input}),
...