Javascript $.post始终将空值获取到服务器中
好的,这可能很简单,我有一个简单的$.post调用,向服务器发送字符串数组作为参数Javascript $.post始终将空值获取到服务器中,javascript,c#,jquery,arrays,asp.net-mvc,Javascript,C#,Jquery,Arrays,Asp.net Mvc,好的,这可能很简单,我有一个简单的$.post调用,向服务器发送字符串数组作为参数 $.get('/home/ReadCalPacTagValue', data, function (data) { data = $.parseJSON(data); if (data.length != 0) { var ReadFromDb = data[0]["PushToDb"].replace('PushToDb','Re
$.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");
}
})
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("<", "").Replace(">", ">").Split('>');
objNewTag.WriteTag(writetags, actionValue[i]);
}
}
}
我的问题是,每次发出$.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");
}
})
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("<", "").Replace(">", ">").Split('>');
objNewTag.WriteTag(writetags, actionValue[i]);
}
}
}
public void WriteCalPacTagValue(string[]updateTags,string[]actionValue)
{
字符串[]writetags={};
DanpacUIRepository objNewTag=新的DanpacUIRepository();
如果(updateTags.Count()>0)
{
actionValue[0]=ConfigurationManager.AppSettings[“DBString”].ToString();
对于(int i=0;i”)。拆分(“>”);
objNewTag.WriteTag(writetags,actionValue[i]);
}
}
}
我不明白我在这里做错了什么。。而同一个函数正从另一个JS文件(带有一些不同的字符串)运行到数组updateTags中
有什么帮助吗?
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#u标记)
将整个数据作为json字符串发送,在javascript代码中,更改WriteCalPacTagValue
以在参数处接受单个字符串,并在服务器端用C代码对其进行反序列化
编辑如果无法更改服务器端代码,可以按照注释中的说明进行操作。发送数据数组,因此需要使用
$.ajax()
方法,以便设置内容类型:'application/json',
并使用stringify数据-数据:json.stringify(数据标签),
。或者,您必须发送单个集合项-{updateTags[0]:dbconnTag,updateTags[1]:'FIdTag,…}
尝试使用ajax
和traditional:true
-感谢在显式设置ajaxsetting-traditional:true时解决了这个问题。感谢您的解决方案Hossein,但我无法在C#端进行更改。