0

アプリケーションに ajax で Javascript 配列を渡すのに問題があります。ajax 呼び出しはサーバー側メソッドを実行していますが、パラメーターは null であり、メソッドが処理を終了する前であっても、ajax はエラーをスローします (エラー関数を実行します)。

これは私のajax呼び出しです:

<script>
    var permissoesUsuario = Array();
    $(function () {
        //funcao de envio das permissoes
        $('#btnSalvar').click(function () {
            //desabilita o botao de salvar
            $(this).attr('disabled', 'disabled');

            $.each($('input[name="chkPermissao"]:checked'), function () {
                permissoesUsuario.push({
                    IdEmpresa: $(this).attr('data-empresa'),
                    IdPermissao: $(this).attr('data-permissao')
                });
            });

            $.ajax({
                url: '@(Url.Content("~/Funcionario/Permissoes"))',
                data: JSON.stringify(permissoesUsuario),
                type: 'POST',
                contentType: 'application/json; charset=utf-8',
                success: function (response) {
                    permissoesUsuario = Array();
                    if (response == '') {
                        window.location = '@(Url.Content("~/Funcionario"))';
                    }
                },
                error: function(){
                    console.log('Erro');
                }
            });
        });
</script>

そして私のサーバー側の方法:

[HttpPost]
public ActionResult Permissoes(IList<PermissaoAcessoInputModel> permInput)
{
     //Do something
}

permInput 変数が null です。

これは私の PermissaoAcessoInputModel クラスです:

public class PermissaoAcessoInputModel
{
    public virtual int IdPermissao { get; set; }

    public virtual ulong? IdEmpresa { get; set; }
}
4

1 に答える 1

0

設定してみましたか

traditional: true

あなたのAJAXオプションで?

        $.ajax({
            url: '@Url.Content("~/Funcionario/Permissoes")',
            data: JSON.stringify(permissoesUsuario),
            type: 'POST',
            traditional: true,
            contentType: 'application/json; charset=utf-8',
            success: function (response) {
                permissoesUsuario = Array();
                if (response == '') {
                    window.location = '@Url.Content("~/Funcionario")';
                }
            },
            error: function(){
                console.log('Erro');
            }
        });
于 2013-09-06T21:40:04.567 に答える