在ASP.NET中使用JSON时使用POST时遇到问题。请在使用POST时检查我的代码。 javascript代码有问题吗?
确切错误:
无法加载资源:服务器响应状态为405 (不允许的方法) localhost:99 / Service1.svc / api / updtelogin.json XMLHttpRequest 无法加载localhost:99 / Service1.svc / api / updtelogin.json。没有 '访问控制允许来源'标题出现在请求的上 资源。 Origin' localhost:1110'因此是不允许的 访问。响应的HTTP状态代码为405。
IService
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "api/updtelogin.json")]
UpdateUser updteUser(RequestData rData);
的RequestData
[DataContract(Namespace = "")]
public class RequestData
{
[DataMember]
public string details { get; set; }
}
Service.svc
private UpdateUser updateuser(RequestData rData)
{
return updteUser(rData);
}
public UpdateUser updteUser(RequestData rData)
{
var data = rData.details.Split('|');
}
这是我在ASP.NET上的javascript
<script type="text/javascript">
$("#btnChange").live("click", function () {
var test = {};
test.uname = "admin";
$.ajax({
type: 'POST',
url: 'http://localhost:99/Service1.svc/api/updtelogin.json',
data: "{rData:" + JSON.stringify(test) + "}",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (r) {
alert(r.d.uname);
}
});
});
</script>
答案 0 :(得分:1)
如果我错了,请纠正我,你有两个申请:
由于端口不同,这违反了"same origin policy" ajax请求。
您可以在此处获得如何将CORS标头添加到WCF服务的说明:Enable CORS on WCF Service. Get HTTP 405: Method Not Allowed