首页 > 解决方案 > CSHTML(RAZOR) 中可重用的 ajax 和 javascript 函数

问题描述

我是 js 和 razor 的新手,我的部分代码应该重复,这对我的项目施加了更多的代码行,如果我可以使其可重用,例如 Ajax,我应该在哪里创建一个特定 URL 的 ajax在我需要的时候调用它?在一个单独的剃须刀文件中?在下面的代码中,我有两个点击事件,我的 ajax 调用和 url 正在重复,我想摆脱这个重复:

function seriesClick(e) {
var _clicketBarChart = e.series.categoryField;

$.ajax({
           dataType: "json",
           type: "POST",
           url: "@Url.Action("faultstatistics","Dashbrd")",
           contentType: "application/json; charset=utf-8",
           data: JSON.stringify({ "name": _clicketBarChart }),
               success: function (result) {
              faultstatChart(result);
               }
});


      function changeEvent(e) {             
      var _clicketCellGrid = e.categoryCell;


          $.ajax({
           dataType: "json",
           type: "POST",
           url: "@Url.Action("faultstatistics","Dashbrd")",
           contentType: "application/json; charset=utf-8",
           data: JSON.stringify({"name": _clicketCellGrid }),
               success: function (result) {
           faultstatChart(result);
               }
});
      }

标签: javascriptasp.net-mvcrazor

解决方案


您必须创建可以处理两种情况的单个方法,请参考此示例(基于您的):

var ajaxHandler = function(targetName) {
  $.ajax({
    dataType: "json",
    type: "POST",
    url: "@Url.Action("faultstatistics","Dashbrd")",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify({"name": _clicketCellGrid }),
    success: function (result) {
      faultstatChart(result);
    }
  });
}

var seriesClick = function(e) {
  var targetName = e.series.categoryField;
  ajaxHandler(targetName);
}
var changeEvent = function(e) {
  var targetName = e.categoryCell;
  ajaxHandler(targetName);
}

推荐阅读