【问题标题】:Returning message from controller to ajax request jquery从控制器返回消息到ajax请求jquery
【发布时间】:2018-07-30 18:40:54
【问题描述】:

我在从 Controller 获得对 ajax 请求的响应时遇到问题。 请求已正确完成,但是我无法从控制器获取消息以检查它是否成功。

主题控制器代码

public JsonResult SaveSubjects(SubjectViewModel model) {
  bool success = false;
  if (ModelState.IsValid) {
    success = true;
    char[] years = model.Year.ToCharArray();

    for (int i = 0; i < years.Length; i++) {
      model.Year = years[i].ToString();
      Subject s = subjectGateway.FindById(int.Parse(model.Year), model.Title);
      if (s == null)
        addSubjectUseCaseFactory.AddSubjectUseCase().Execute(new AddSubjectRequestCreator().ToRequest(model));
      else {
        success = false;
        break;
      }
    }
  }
  return Json(new {
    success
  });
}

JQUERY 代码

我已经在我有困惑的地方添加了注释行

$.ajax({
  type: "POST",
  url: '@Url.Action("SaveSubject","api/Subject")',
  data: subject,
  dataType: "html",
  success: function(subject) { // the subject gets the value "{\"success\":true}"
    debugger;
    if (subject.success) { //but here the success it says undefined.
      debugger;
      var valuesArray = new Array();
      valuesArray = selectedValue.split("");
      for (var i = 0; i < valuesArray.length; i++) {
        var select = '<select id="selectYearCell" class="form-control" width="10">' +
          '<option>5</option>' +
          '<option>6</option>' +
          '<option>7</option>' +
          '<option>8</option>' +
          '<option>9</option>' +
          '</select>';
        var row = '<tr>' +
          '<td>' + (rowIndex++) + '</td>' +
          '<td>' + title + '</td>' +
          '<td>' + valuesArray[i] + '</td>' +
          '<td>' + actions + '</td>' +
          '</tr>';

        $("#mainTable").append(row);

      }

      $("#Title").val('');
      $("#Title").removeClass("makeRed");
      $('[data-toggle="tooltip"]').tooltip();
      // $("table tbody tr").eq(index + 1).find(".add, .edit").toggle();

    } else {
      alert("Lenda ekziston");
    }
  }

});
}

【问题讨论】:

  • dataType: "application/json", contentType: "application/json"
  • 检查网络选项卡并找出从您的 ajax 调用返回的响应。它是否具有预期的结构?

标签: javascript jquery asp.net asp.net-mvc asp.net-core


【解决方案1】:

你应该像这样返回:

return Json(success);

在 ajax 中生成类似的条件:

if (subject == true) { 
//your Code      
}

【讨论】:

    【解决方案2】:

    您的响应是一个字符串。您应该:

    1. 在 ajax 请求中定义 dataType 和 contentType(目前您已将其设置为 dataType: "html")。
    2. let data = JSON.parse(subject)解析字符串

    【讨论】:

      猜你喜欢
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      • 2011-10-25
      相关资源
      最近更新 更多