【问题标题】:ajax call returns values and my html pageajax 调用返回值和我的 html 页面
【发布时间】:2022-03-07 11:18:09
【问题描述】:

我目前正在使用以下代码对我的控制器执行 ajax 调用:

$.ajax({
    type: "POST",
    url: "@Url.Action("uploadImage", "Item")",
    data: '{ "imageData" : "' + image + '" }',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (success) {
        alert('Success ' + success.responseText);
    },
    error: function (response) {
        alert(response.responseText);
    }
});

这是控制器:

[HttpPost]
public ActionResult uploadImage(string imageData)
{
    string imageName = Guid.NewGuid().ToString();

    try
    {
        ProductManager pm = new ProductManager();
        pm.AddNewProduct(imageName);
    }catch(Exception e)
    {
        writeToLog(e);
    }
    return Json(new { success = imageName }, JsonRequestBehavior.AllowGet);
}

它到达控制器并且 AddNewProduct 函数成功运行。问题是我希望它返回在控制器中创建的图像名称。这也可以,但它也会返回我完整的 html 页面。 我在成功和发生错误时发出警报,但不知何故,它总是以以下警报结束:

它显示了我需要的值,但为什么它也会返回我的完整 HTML?

【问题讨论】:

  • 老实说,鉴于您显示的代码,我看不出这怎么可能。
  • @Alexandru-IonutMihai 是的,和我的代码完全一样,直接复制粘贴。
  • 您的 ajax 调用是在某个 Razor 视图页面中还是在某个外部 js 文件中?如果它在某个外部 js 文件中,那么您可以按照此答案中给出的方法,而不是提供如下的 api URL 'url: "@Url.Action("uploadImage", "Item")' 检查此方法 stackoverflow.com/questions/34360537/…
  • mvc 管道中的某个地方正在将附加文本添加到响应的正文中,您需要弄清楚它在哪里。如果它不在您显示的方法代码中,那么另一个选项将在事件处理程序中(通常在 global.asax.cs 中找到)或在自定义操作过滤器中(查看是否有任何全局注册或顶部装饰类或方法)。
  • 当然,DNN 的管道中可能存在一个或多个挂钩,它们会在您的响应周围添加模板代码。至于如何绕过该管道,我不确定,您必须通读 DNN 文档上的操作方法。您应该首先了解如何将 DNN 连接到您的 MVC 应用程序(或反之亦然)。如果你想创建一堆 REST 方法,最好的做法是使用 Web API 而不是 MVC,因为 DNN 可能不会假设你想从 Web API 调用返回 HTML。通过在这个旁边添加一个 Web API 控制器并复制/粘贴方法主体来尝试它

标签: javascript c# jquery html ajax


【解决方案1】:
  • 您不需要JsonRequestBehavior.AllowGet。这必须仅用于GET 请求,以保护您免受涉及 JSON 请求的非常具体的攻击。在您的代码中,您使用的是 POST 动词。

  • 您应该使用以下代码来获取从服务器接收到的success 字符串。

    success: function (response) { alert('Success ' + response.success); }

【讨论】:

  • 感谢有关 AllowGet 的提示,我从代码中删除了该位。我还在通话中更改了我的成功函数,但我的结果保持不变。
  • 这个,结合stackoverflow.com/questions/32178142/…上的解决方案解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2021-01-30
  • 2015-07-15
  • 2014-02-21
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多