使用jquery 1.7.1对WCF rest服务进行$.post调用
本文关键字:post 调用 服务 rest jquery WCF 使用 | 更新日期: 2023-09-27 18:19:58
所以我有以下工作:
$.ajax({
type: 'POST',
url: 'user',
data: '{"FirstName":"John","LastName":"Doe"}',
contentType: "application/json",
dataType: 'json',
success: function (data) {
alert('success!' + data.Id);
}
});
然而,这失败了(应该是等效的):
$.post('user', '{"FirstName":"John","LastName":"Doe"}');
知道怎么了吗?$.post在某种程度上与WCF rest不兼容吗?
contentType: "application/json"
请求标头。你没有设置它,因为$.post
方法不允许你这样做。
服务器不接受您的请求,因为您正试图POST到启用了JSON的服务,所以它希望请求是JSON,当然,客户端需要设置application/json
内容类型请求标头。您正在发布一些字符串,由于您没有通过内容类型标头指示该字符串代表什么,服务器不知道该如何处理它并丢弃请求。
也就是说,您应该像第一个示例中那样使用$.ajax
来调用您的服务。事实上,我建议你稍微修改一下,而不是:
data: '{"FirstName":"John","LastName":"Doe"}',
用途:
data: JSON.stringify({"FirstName":"John","LastName":"Doe"}),
这将确保,如果明天您决定与Mr. Jon Doe
以外的其他人打交道,例如Mr. Jon O"Hara
,您的JSON仍将被正确编码,这就是JSON.stringify
方法所做的。它是在现代浏览器中原生构建的,但如果您需要支持一些遗留浏览器,您可以包含json2.js脚本来启用它。