【发布时间】:2019-06-01 07:13:51
【问题描述】:
我想使用 JQUery sortable 和 Ajax 更改 OrderNumber。但是 formData 是空的。
我正在使用 FormData 来收集排序的行并传递给 API 控制器。每次处理行时,Ajax 都会调用等等,但问题是在它之前 FormData 是空的(控制台日志报告)。
AnswerSteps 数据库中的表:
[ID] [int] IDENTITY(1,1) NOT NULL,
[QuestionID] [int] NOT NULL,
[AnswerFA] [nvarchar](max) NOT NULL,
[AnswerEN] [nvarchar](max) NOT NULL,
[ImageURL] [nvarchar](max) NOT NULL,
[OrderNumber] [int] NOT NULL
查看模型:
public class SortedAnswersViewModel
{
public List<string> SortedAnswerIDs { get; set; }
}
jquery:
var $sortableList = $("#sortable");
var sortEventHandler = function (event, ui) {
var data = new FormData();
var $listElements = $sortableList.children();
var listValues = [];
$.each($listElements, function (i, v) {
listValues.push(v.id);
});
data.append("SortedAnswerIDs", listValues);
console.log(data); // data is always null here
var ajaxRequest = $.ajax({
//Some Codes
});
};
$("#sortable").sortable({
update: function (event, ui) {
sortEventHandler();
},
});
我的代码有什么问题?
【问题讨论】:
-
data为 null 没有意义。你的意思是data没有任何listValues? -
@rene 抱歉,我的意思是它是空的,没有任何元素。
-
添加
console.log($listElements)并检查该集合是否有项目。在listValues.push(v.id);之前添加console.log(v);以查看v是否有id 属性 -
@rene listElements 和 listValues 的元素也由 console.log 显示,对于 listValues 在每次排序后它都会返回正确的排序。 0:“2” 1:“4” 2:“3” 3:“11”
-
您能否在您的 Ajax 请求之前执行
data.forEach((v,k)=> {console.log(v,k);});并检查是否有输出。在my testing it does.
标签: c# sql-server ajax model-view-controller