使用ajax更新数据库后重新加载页面

时间:2019-08-02 13:55:26

标签: jquery .net ajax model-view-controller

因此,在使用ajax请求将数据发送到控制器之后,我需要重新加载页面。控制器将其保存到数据库中,然后重新加载的页面应具有更新的内容:

[控制器]

 function Reprocess() {
        var checkedID = '#' + document.querySelector('input[name="select"]:checked').value;
        var line = $(checkedID)[0].children;
        var obj = {};

        obj.ID = line[0].textContent;
        obj.EndDate = line[1].textContent;
        obj.ProcessedDate = line[2].textContent;

        $.ajax({
            type: "POST",
            url: '@Url.Action("SaveReprocessData", "Processing")',
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(obj),
            dataType: "json",
            success: function (result) {    
                window.location.reload();
                alert("updated licenses");
            },
            error: function (ex) {
                alert(ex);
                console.log("we have failed");
            }
        });
    }

[查看]

override func viewDidLoad() {
    self.view.layer.anchorPoint = CGPoint(x: 0, y: 0)
}

func scaleMyView() {
    self.view.transform = CGAffineTransform(scaleX: 1.1, y: 1.1)
}

SaveReprocessData应该返回什么以在View上接收新视图?以及如何使用该收益?

1 个答案:

答案 0 :(得分:0)

我同意tobias。通过尝试重新加载页面来克服使用ajax的全部目的,但是解决方案是仅更改 SaveReprocessData 方法的返回类型并返回新的数据列表

[HttpPost]
public RunModel SaveReprocessData(Run runPost)
{
    runManager.SaveToDataBase(runPost);

    return runManager.GetRunModelList();
}

此外,除非在执行ajax POST请求之后客户端在服务器端生成了一些值,否则可以避免一起对数据库进行额外的调用。您只需要将您的JavaScript代码更新为类似的内容

$.ajax({
            type: "POST",
            url: '@Url.Action("SaveReprocessData", "Processing")',
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(obj),
            dataType: "json",
            success: function (result) {    
               // window.location.reload();
               // alert("updated licenses");
                 reloadView(obj); 
            },
            error: function (ex) {
                alert(ex);
                console.log("we have failed");
            }
        });