Amplify.js + Asp.net Web Api发送多个参数

时间:2012-11-28 16:35:26

标签: javascript jquery asp.net asp.net-web-api amplifyjs

用于定义ajax调用的js代码:

function InitDataServices() 
{    
    amplify.request.decoders.myDecoder =
    function (data, status, xhr, success, error) 
    {
      if (status === "success")           {
         success(data);
      } else if (status === "fail" || status === "error") {
        error(message, status);
    } else {
        error(message, "fatal");
    }
};

amplify.request.define("Emision_FiltrarSeguros", "ajax", {
    url: "http://localhost:63721/api/emision/filtrar",
    type: "POST",
    dataType: "json",
    decoder: "myDecoder"
});
}

然后进行实际ajax调用的代码是:

function Emision_FiltrarSeguros(requestData,okFunction, failFunction) 
{
     amplify.request({
    resourceId: "Emision_FiltrarSeguros",
    contentType: "application/json",
    data: JSON.stringify(requestData),
    success: function (data) {
        okFunction(data);
    },
    error: function (message, level) {
        failFunction(message,level);
    }
});
};

最后这个代码在页面中进行调用:

function FiltrarSeguros()
    {   
        this.request = {Ramo:-1, 
                        NroSocio: 107701,
                        NroSeguro:-1,
                        NroEndoso:-1,
                        Vigentes:0,
                        Patente:"" };
        Emision_FiltrarSeguros(request,okFiltrarSeguros, failFiltrarSeguros);
    }

控制器代码是:

public List<FiltroSeguroResponse> Filtrar(FiltroSeguroRequest request)
    {
        return DLL.Service.EmisionService.FiltrarSeguros(request, "jdh");
    }

问题是我从页面POST的数据永远不会映射到请求(类型为FiltroSeguroRequest,其属性与我在ajax调用中构建的对象文字相同)参数。 怎么了???感谢。

1 个答案:

答案 0 :(得分:0)

将内容类型添加到您定义放大请求的位置,如下所示:

amplify.request.define("Emision_FiltrarSeguros", "ajax", {
    url: "http://localhost:63721/api/emision/filtrar",
    type: "POST",
    dataType: "json",
    decoder: "myDecoder",
    contentType: 'application/json; charset=utf-8',
});