【问题标题】:Ajax post script not workingAjax 发布脚本不起作用
【发布时间】:2015-11-16 10:54:08
【问题描述】:

这无疑是一个新手问题,但我找不到类似的问题。我想通过 JS 函数将模型传递给动作。我有 Ajax 脚本:

   var modelDataJSON = '@Html.Raw(Json.Encode(Model))';

    $.ajax({
        url: '@Url.Action("Action1", "Home")',
        type: 'POST',
        data: modelDataJSON,
        dataType: 'json'
    });

我已经采取行动了:

  public ActionResult Action1(MyModel modelDataJSON)
    {
        return Content(modelDataJSON.ToString());

    }

它什么也没做。我错过了什么?再次,对于新手问题感到抱歉,但我已经被困太久了。

【问题讨论】:

  • 你如何确定它没有做任何事情?没有任何代码可以在开发者工具之外产生可见的效果。
  • 您是否在浏览器的开发者工具中检查了控制台是否有错误?您是否检查了那里的网络选项卡以查看是否发出了 POST 请求?您是否添加了 successerror 函数,以便在响应返回时发生某些事情?
  • 但是它不调用Action1,显示内容吗?这不是调用动作的正确脚本吗?
  • "但它不调用 Action1" — 你怎么知道它是否调用?
  • "哪个显示内容?" — 不,它没有。它会做出一个包含一些内容的 HTTP 响应。浏览器可能会显示该内容,但仅考虑您在问题中提供的 JavaScript,它不会显示。

标签: javascript ajax asp.net-mvc


【解决方案1】:

也许有误会。我要问的是如何使用 JS 脚本重定向到 Action1 URL。如果它运行,那么它将显示内容,因为它是一个内容操作。

如果要加载新页面,请不要使用 Ajax。

要发出 POST 请求,您需要提交表单。

解决这个问题的最佳方法是使用普通的、常规的 HTML 表单,根本不涉及 JS。

如果你真的想涉及到 JS 那么你可以生成一个表单。

var f = document.createElement("form");
f.action = myURL;
f.method = "POST";
// append inputs to the form to pass the data in modelDataJSON here
document.body.appendChild(f);
f.submit();

请注意,您不能以这种方式发送 JSON 有效负载(但尽管变量名称为 modelDataJSON,但您的 Ajax 无论如何都会发送标准格式编码数据)。

【讨论】:

  • 谢谢你,这很有帮助!
猜你喜欢
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 2018-07-04
  • 1970-01-01
相关资源
最近更新 更多