0

javascriptに関数があり、Ajaxでc#にjsonを送信しているのですが、c#で受信するとjsonではありません。どうすればいいですか?C# に Response.Write(arr) を入れると、応答は System.string[] になります。私のプロジェクトはMVC 3です

関数c#

public int salvar(string[] arr)
            {

                SqlConnection conexao = new SqlConnection(WebConfigurationManager.ConnectionStrings["strConexao"].ToString());
                conexao.Open();
                SqlTransaction trx = conexao.BeginTransaction();

                try
                {
                    //Truncate cliente_recurso
                    //BUProjetosDAL dal = new BUProjetosDAL();
                   // dal.excluirClientesRecurso(conexao, trx);
                    dtsRecursoClienteTableAdapters.RECURSO_CLIENTETabelaTableAdapter tabela = new dtsRecursoClienteTableAdapters.RECURSO_CLIENTETabelaTableAdapter();

                    for (int j = 0; j <= 149; j++) { // <- here
                        tabela.Insert(arr);
                    }

                    trx.Commit();
                    return 1;
                }
                catch (SqlException ex)
                {
                    try
                    {
                        trx.Rollback();
                        return 0;
                    }
                    catch (Exception exRollback)
                    {
                        return 0;
                    }  
                }

            }

関数 js + ajax

$("#btnSalvar").on("click", function () {
        var confirma = confirm("Deseja salvar os dados?");
        if (confirma) {
            var lista = jQuery("#tabelaRecurso").getDataIDs();
            var total = lista.length;
            var arr = [];
            for (var i = 1; i <= lista.length; i++) {
                var rowData = $("#tabelaRecurso").jqGrid('getRowData', i);

                if (rowData.CD_CLIENTE != 0) {
                    arr[i - 1] = {
                        col1: rowData.CD_RECURSO,
                        col2: rowData.NM_RECURSO,
                        col3: rowData.CD_CLIENTE,
                        col4: rowData.LISTA_EMAIL,
                        col5: rowData.LISTA_EMAIL_COPIA
                    }
                }
            }

            $.ajax({
                type: 'POST',
                url: '/Paginas/salvar',
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify(arr),
                dataType: 'json',
                success: function (dados) {
                    if (dados == 0) {
                        alert("Nao foi possivel salvar os dados");
                    }
                }
            });
        }
    });
4

1 に答える 1

0

使ってみて

$.ajax({
            type: 'POST',
            url: '/Paginas/salvar',
            contentType: "application/json; charset=utf-8",
            data: arr,
            dataType: 'json',
            traditional: true, --> use the traditional object serialization for the array
            success: function (dados) {
                if (dados == 0) {
                    alert("Nao foi possivel salvar os dados");
                }
            }
        });
于 2013-11-06T22:22:39.807 に答える