嗨我的服务器上有这个代码:
[OperationContract]
[WebInvoke(UriTemplate = "createinvoice", Method = "PUT")]
public Invoice CreateInvoice(Invoice instance)
{
// TODO: Add the new instance of SampleItem to the collection
try
{
string icode = instance.InvoiceCode;
return new Invoice() {InvoiceCode = icode };
}
catch( Exception )
{
throw new NotImplementedException();
}
}
现在在我的客户端:
var instance = {};
instance.InvoiceCode = "INV0004";
//instance.AmountPaid = 1000;
alert (JSON.stringify(instance));
$.ajax({
//cache:false,
url : 'http://localhost/Mobile/POS/createinvoice/',
data: JSON.stringify(instance),
type: 'PUT',
dataType: 'json',
contentType: "application/json; charset=utf-8",
processData: false,
async:false,
success: function(msg){
alert(JSON.stringify(msg));
},
error: function(jqXHR, exception){
alert("error "+ jqXHR.status);
}
});
现在根据我读过的内容,PUT方法不会将数据附加到URL本身。现在我每次使用firebug运行它时都会看到404 not Found错误。我几乎是新的,所以我现在还没有真正的线索。与此相比,get方法非常简单。你能帮我弄清楚什么是错的吗?谢谢。
我在firebug上查看了xhr,这是响应的一部分(在HTML中)
<p xmlns="">Endpoint not found. Please see the <a rel="help-page" href="http://localhost/Mobile/POS/help">service help page</a> for constructing valid requests to the service.</p>
如果我正确地阅读它,它说我在做出实际要求时出了点问题?那格式错了吗?
答案 0 :(得分:1)
试试这个ResponseFormat = WebMessageFormat.Json
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,UriTemplate = "createinvoice", Method = "PUT")]
public Invoice CreateInvoice(Invoice instance){
***
}
修改强>
所有浏览器都不支持jQuery documentation put
。
<强>型强>
默认值:'GET'要发出的请求类型(“POST”或“GET”), 默认为“GET”。注意:其他HTTP请求方法,例如PUT和 DELETE,也可以在这里使用,但并非所有人都支持它们 浏览器。