jQuery ajax POST调用 - 不包括参数

时间:2011-11-02 06:02:10

标签: jquery ajax post parameters get

当我运行类型为“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停止请求参数包括在内?

2 个答案:

答案 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");