我有一个动作方法,它有两个字符串数组作为参数,我发布这个动作方法与ajax post方法,我有一个问题,在控制器上我得到两个数组数据相同 但我正在使用不同的数据制作两个数组(一个包含其他包含名称的代码) 下面是我的代码
public ActionResult SectionBook(string[] cs,string[] cname)
{
}
var CourseSection=new Array();
var CourseName=new Array();
$('a p-button').live('click', function () {
var schoolCourseId = $(this).attr('id');
CourseSection.push(schoolCourseId);
CourseName.push($(this).html().split("(")[0]);
});
$('#btnSubmit').live('click', function () {
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: '/MyController/SectionBook',
// dataType: 'json',
data: $.toJSON(CourseSection, CourseName),
success: function (result) {
window.location.href = '/MyController/SectionBooks'
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
},
async: false,
cache: false
});
});
我调试了JS代码,这两个数组在这里有不同的值,但在控制器cs和cname中包含相同的数据
答案 0 :(得分:1)
答案 1 :(得分:1)
尝试不使用contentType:' application / json; charset = utf-8',你没有在服务器端的任何地方指定它,所以mvc尝试在发布时使用来自请求主体的defalut绑定。因此,只需将js对象作为数据参数传递,jQuery将在此请求的主体中使用必要的对象表示执行常见的post请求。
$.ajax({
type: 'POST',
url: '/MyController/SectionBook',
data: {cs: CourseSection, cname: CourseName},
success: function (result) {
window.location.href = '/MyController/SectionBooks'
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
},
async: false,
cache: false
});
答案 2 :(得分:1)
我认为问题是toJSON方法只接受一个参数而忽略其余参数。所以通过做 $ .toJSON(CourseSection,CourseName) 您只是使用传入的第一个数组的值创建JSON对象。 如果你将2个数组包装成对象,那就像这样
var CourseSection = new Array();
var CourseName = new Array();
CourseSection.push("cs1");
CourseSection.push("cs2");
CourseSection.push("cs3");
CourseName.push("cn1");
CourseName.push("cn2");
CourseName.push("cn3");
var newObj = {
cn:CourseName,
cs:CourseSection
};
然后使用
将newObj对象转换为JSONJSON.stringify(newObj)
或
$.toJSON(newObj)
您应该能够使用JavascriptSerializer
从控制器中的两个数组中检索值答案 3 :(得分:0)
尝试这个
var data = { courseSection:CourseSection.toString(),courseName:CourseName.toString()};
$.ajax({
url:'/MyController/SectionBook',
type:'GET',
data:data,
async:false,
success:function(data)
{
window.location.href = '/MyController/SectionBooks'
}
});
}
In Controller
public ActionResult SectionBook(string courseSection,string courseName)
{
}
只需确认befor ajax调用您的数组是否包含不同的值。在json中你应该在密钥对中传递值,在控制器中你将获得这些值作为逗号分隔符。
答案 4 :(得分:0)
问题出在data:
$。toJSON(CourseSection,CourseName),`
它用第一个元素填充它们检查文档