【问题标题】:Json parameter js + c# (MVC 3)Json 参数 js + c# (MVC 3)
【发布时间】:2013-10-28 13:17:22
【问题描述】:

我在 javascript 中有一个函数,我通过 Ajax 将 json 发送到 c#,但是当我在 c# 中接收时,它不是 json。我怎么做?如果我将 Response.Write(arr) 放在 c# 中,则响应为 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");
                    }
                }
            });
        }
    });

【问题讨论】:

  • C# 自动将 JSON 对象序列化为正确的参数,即如果您的函数采用参数 FirstnameLastname 并且您的 JSON 具有 FirstnameLastname 的属性,这些将自动分配。
  • 但问题是我没有正确接收到 json 作为参数
  • C#中arr的值为NULL,而js中arr的值为json

标签: c# javascript ajax json asp.net-mvc-3


【解决方案1】:

尝试使用

$.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");
                }
            }
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多