当我运行类型为“POST”的ajax请求时,参数不包含在字符串中。
此代码:
$telerik.$.ajaxSetup({
accepts: 'application/json, text/javascript, */*'
});
var parameters = {
"playerId": args.playerId
};
var ajaxCallParameters = {
async: true,
cache: false,
url: "../Services/CmsWebService.svc/SendUpdateRequestToPlayer",
type: "POST",
data: parameters,
dataType: 'json',
error: function (jqXHR, textStatus, errorThrown) {
var errorString = 'Error thrown from ajax call: ' + textStatus + 'Error: ' + errorThrown;
var displayPanel = document.getElementById('requestStatusUpdateResults');
$telerik.$(displayPanel).text(errorString);
},
success: function (data, textStatus, jqXHR) {
var displayPanel = document.getElementById('requestStatusUpdateResults');
$telerik.$(displayPanel).text(data.d);
}
};
$telerik.$.ajax(ajaxCallParameters);
触发此请求(在Fiddler中查看)
POST /Web/Services/CmsWebService.svc/SendUpdateRequestToPlayer HTTP/1.1
如您所见,该参数未包含在内。
如果我只是在代码中将“POST”改为“GET”,那么这就是请求:
GET /Web/Services/CmsWebService.svc/SendUpdateRequestToPlayer?playerId=1&_=1320213556288 HTTP/1.1
发生了什么事?什么是POST停止请求参数包括在内?
答案 0 :(得分:4)
HTTP POST的行为与GET不同。当您使用HTTP GET时,它会将参数作为URL查询字符串的一部分发送,这就是您添加它们的原因。但是,当您使用HTTP POST时,参数将作为HTTP正文的一部分发送,因此它们不会添加到URL中。
使用POST而不是GET的原因是GET参数在某些浏览器中有大小限制,而在通过POST提交时,您可以拥有几乎任何长度的参数。
根据正在使用的后端服务器技术,服务器可能会将GET参数和POST参数视为相同,因此您的后端服务将处理任何一项罚款。但是,在很多情况下,您必须专门编写后端服务代码,以通过GET& amp; POST。
答案 1 :(得分:0)
Fidller不显示POST变量。你可以看到这些变量然后点击url然后点击Inspectors>的WebForms
如果仍然无效,请尝试:
var parameters = {
"playerId": args.playerId
};
$.post("../Services/CmsWebService.svc/SendUpdateRequestToPlayer",parameters),function(data) {
$("#requestStatusUpdateResults").text(data.d);
},'json");