【问题标题】:$.post always getting null values into server$.post 总是将空值输入服务器
【发布时间】:2017-11-19 07:59:00
【问题描述】:

好的,这可能很简单,我正在对服务器进行简单的 $.post 调用,将字符串数组作为参数发送..

 $.get('/home/ReadCalPacTagValue', data, function (data) {
            data = $.parseJSON(data);
            if (data.length != 0) {
                var ReadFromDb = data[0]["PushToDb"].replace('PushToDb','ReadFromDb');
                var DBAckno = ReadFromDb.replace('ReadFromDb', 'DataAck');
                var FIdTag = ReadFromDb.replace('ReadFromDb', 'FluidTypeId');
                var UserIdTag = ReadFromDb.replace('ReadFromDb', 'UserId');
                var UniqueIdTag = ReadFromDb.replace('ReadFromDb', 'UniqueRecordId');
                var dbconnTag = ReadFromDb.replace('ReadFromDb', 'DatabaseConnectionString');
                updateTags = [dbconnTag,FIdTag,ReadFromDb, UserIdTag,UniqueIdTag];
                actionvalue = ["", fluidtypeid, '1', userid, uniqueID];
                var data_Tags = { updateTags: updateTags, actionvalue: actionvalue }
                $.post('/home/WriteCalPacTagValue', data_Tags, function (response) {
                    //var Path = "Config/16_CalPac/" + FluidType + "/" + metername + "/" + FileName
                    //$.cookie('FileName', FileName, { expires: 7, path: '/' });
                    //$.cookie('FilePath', Path, { expires: 7, path: '/' });
                    //$.cookie('ModuleName', "CalPac", { expires: 7, path: '/' });
                    //window.open('../home/CalPac', '_blank');
                });
            } else {
                    swal("Error !", "Data operation tag not binded for this product", "warning");
            }
        })

我的问题是,每次调用 $.post 时,服务器都会获取空值 int 参数..

 public void WriteCalPacTagValue(string[] updateTags, string[] actionValue)
        {
            string[] writetags = { };
            DanpacUIRepository objNewTag = new DanpacUIRepository();

            if (updateTags.Count() > 0)
            {
                actionValue[0] = ConfigurationManager.AppSettings["DBString"].ToString();
                for (int i = 0; i < updateTags.Count(); i++)
                {

                    writetags = updateTags[i].Replace("&lt;", "").Replace("&gt;", ">").Split('>');
                    objNewTag.WriteTag(writetags, actionValue[i]);
                }

            }
        }

我没有明白我在这里做错了什么。而相同的函数正在另一个 JS 文件中工作,其中包含一些不同的字符串到数组 updateTags 中。

有什么帮助吗?

【问题讨论】:

  • 您发送的数据数组,因此您需要使用 $.ajax() 方法,以便您可以设置 contentType: 'application/json', 并使用字符串化数据 - data: JSON.stringify(data_Tags), 。或者,您必须发送单独的收藏品 - { updateTags[0]: dbconnTag, updateTags[1]:'FIdTag, .... }
  • 试试ajaxtraditional: true - stackoverflow.com/questions/11868051/…
  • 谢谢 当我明确设置 ajaxsetting 传统:true..

标签: javascript c# jquery arrays asp.net-mvc


【解决方案1】:

拥有

public class DataTags
{
    public string[] UpdateTags { get; set; }
    public string[] ActionValue { get; set; }
}

在服务器端:把方法改成这个

[HttpPost()]
public void WriteCalPacTagValue([FromBody]DataTags data_Tags)
{

}

在客户端:调用它

$.ajax({
    type: 'POST',
    url: '/home/WriteCalPacTagValue',
    data: data_Tags,
    success: function (response) { 
    //your code
    }
});

您还可以使用data: JSON.stringify(data_Tags) 将整个数据作为json 字符串发送,在javascript 代码中将WriteCalPacTagValue 更改为在参数处接受单个字符串并在服务器端在C# 代码中对其进行反序列化。

编辑如果您无法更改服务器端代码,您可以按照 cmets 中的说明关注this

【讨论】:

  • 感谢您的解决方案 Hossein,但我无法在 C# 方面进行更改。
猜你喜欢
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-02
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多