【问题标题】:How to update orders of records in SQL table using ajax in C# ASP.NET MVC project?如何在 C# ASP.NET MVC 项目中使用 ajax 更新 SQL 表中的记录顺序?
【发布时间】: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)=&gt; {console.log(v,k);}); 并检查是否有输出。在my testing it does.

标签: c# sql-server ajax model-view-controller


【解决方案1】:

尝试改变这个:var $sortableList = $("#sortable");

为此:var $sortableList = $("#sortable").val();

【讨论】:

    猜你喜欢
    • 2018-02-12
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    相关资源
    最近更新 更多