【问题标题】:Returning undefined type of data on ajax call在ajax调用上返回未定义类型的数据
【发布时间】:2016-02-17 13:49:24
【问题描述】:

我有一个 jquery 脚本,它在我的 MVC 应用程序的控制器内对我的操作进行 ajax 调用:

$('#save').click(function () {
    $.post(url, { id: id, text: textarea.val() }, function (data) {
        if (data) {
            row.children('td').eq(3).text(textarea.val());
            row.children('td').eq(4).text('Da');
            row.children('td').eq(5).hide();
            $('#napomena').val('');
            form.hide();
        }
    });
});

这是我的控制器:

  public ActionResult PravdanjeIzostanaka(string id, string text)
        {
            var obj = db.Odsutnost.Find(Convert.ToInt32(id));
            if(obj!=null && text.Trim()!="")
            {
                obj.Napomena = text;
                obj.Opravdano = true;
                db.SaveChanges();
                return RedirectToAction("PregledIzostanaka");
            }
            return null;  // what am I supposed to return here so that data type in ajax would be undefined??          
        }

如您所见,我正在检查 obj 对象和文本字段是否为 !=null 以及是否为空。如果这两个要求没有得到满足,我想发出一点警告,基本上会说:“文本字段是必需的!”并将我的脚本修改为如下内容:

 if (data!=="undefined") {
            row.children('td').eq(3).text(textarea.val());
            row.children('td').eq(4).text('Da');
            row.children('td').eq(5).hide();
            $('#napomena').val('');
            form.hide();
        }
else{
alert('Text field is required!');
}

所以我需要修改我的脚本和操作(操作应该返回一些 ajax 将其视为未定义的内容,以便我可以发出警报)...

有人可以帮我解决这个问题吗? :)

【问题讨论】:

  • "undefined" 不是undefined。一个是字符串,另一个是undefined。你可以做typeof data !== "undefined",因为 typeof 运算符可以给你"undefined"
  • 好的,但是我需要在我的操作中返回什么,所以它是 typeof data === "undefined" 以便我显示警报弹出窗口?它显然不是空的,因为它不工作......
  • 我没有意识到 data 是 AJAX 的结果。在这种情况下,您将无法获得undefined 值。
  • 好吧,它不必是未定义的......只是检查文本框是否为空并发出警报弹出消息......不管它的客户端还是服务器端......任何想法?
  • 也许会返回一个 404 状态码并将其作为error 进行管理?

标签: javascript jquery ajax asp.net-mvc-4 actionresult


【解决方案1】:

只返回一个未定义的 json 字符串。更像下面这样:

public ActionResult PravdanjeIzostanaka(string id, string text)
        {
            var obj = db.Odsutnost.Find(Convert.ToInt32(id));
            if(obj!=null && text.Trim()!="")
            {
                obj.Napomena = text;
                obj.Opravdano = true;
                db.SaveChanges();
                return RedirectToAction("PregledIzostanaka");
            }
            return json("undefined");           
        }

【讨论】:

  • 终于!!谢谢!!奇迹般有效!! :) :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 2016-04-24
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多