使用POST方法将数据从JavaScript发布到ApiController

时间:2016-02-11 11:08:20

标签: javascript asp.net-apicontroller

我从这样的javascript代码调用webservice:

function callActionAjax(action, data) { //action is "sendnotification"
    var deferred = jQuery.Deferred();
    getWebServiceUrl().done(function (webServiceUrl) { //returns https://server/api
        var s = {
            crossDomain: true,
            xhrFields: { withCredentials: true },
            url: webServiceUrl + "/" + action,
            data: "foobar", //also tried: JSON.stringify(data)
            type: "POST"
            //tried contentType: "application/json"
        };
        jQuery.ajax(s).done(function () {
            deferred.resolve();
        }).fail(function () {
            deferred.reject();
        });
    });
    return deferred.promise();
}

我也有MVC服务,它接收请求。我的控制器看起来像这样:

public class SendNotificationController : ApiController
{
    public void PostSendNotification(dynamic data)
    {
        Console.Write("foo");
    }

    public string GetSendNotification()
    {
        return "Foo Bar.";
    }
}

我在PostSendNotification中有一个断点。我可以看到,该方法接收请求,但data只是空对象。当我尝试在JS端添加contentType时,断点不会被击中。

如何调整我的代码?最后,我想在Controller中检索我的data并能够用它做一些事情。

1 个答案:

答案 0 :(得分:0)

改变你的

    type: "POST"

    method: 'POST'

欢呼声