【问题标题】:Ajax response returns HTML of the pageAjax 响应返回页面的 HTML
【发布时间】:2019-08-28 09:05:48
【问题描述】:

我试图在用户按下加载更多按钮时动态填充网格视图,而不刷新页面。

我面临的问题是响应返回发送它的页面的 HTML。经过进一步调试,我认为该函数根本没有被调用,但我经历了几十个问题并尝试了多种方法来包含带有/不带有剃须刀的 URL,但似乎都不起作用。

这是我用来测试的 ajax 代码

$.ajax({
    type: "GET",
    url: '@Url.Action("ProcessLogEntries", "MediaFiles")',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: successFunc,
    error: errorFunc
});

function successFunc(data, status) {     
    alert(data);
}

这是我试图调用的控制器中的函数。我也试过[HttpGet]。还是一样。

[System.Web.Services.WebMethod]
public ActionResult ProcessLogEntries()
{
    return Json(new { isSuccess = "hello" });
}

任何帮助将不胜感激!

【问题讨论】:

  • 在调试 Jquery Ajax 代码有什么问题之前,一种简单的方法是使用 Postman/Fiddler 测试该方法以找到实际问题,如果它返回所需的响应,那么我们可以在代码
  • 你能附上那个 HTML 响应吗?
  • HTML 响应有时是包含错误详细信息的 .NET 错误页面,因此,如果您查看该页面,可能会有所帮助。

标签: c# asp.net ajax


【解决方案1】:

如果您使用 [WebMethod] 装饰器,您需要将您的方法设为静态,并且根据您的示例,这是您如何在客户端调用它的另一个示例:

$.ajax({
  type: "GET",
  url: "PageName.aspx/MethodName",
  data: "{}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    // Do something interesting with msg.d here.
  }
});

如果您使用的是 MVC,则可以将 url 参数替换为:

url: "MediaFiles/ProcessLogEntries"

【讨论】:

    【解决方案2】:

    对于 MVC,你不想使用 WebMethod 属性;你想使用:

    [HttpGet]
    public ActionResult ProcessLogEntries()
    {
        return Json(new { isSuccess = "hello" }, JsonRequestBehavior.AllowGet);
    }
    

    添加“AllowGet”设置可确保系统不会抛出错误。

    【讨论】:

      【解决方案3】:

      你能不能把这个方法属性去掉试试看。 [系统.Web.Services.WebMethod]

      当您在 mvc 应用程序中调用时,这不是必需的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-10
        • 2021-07-26
        • 2011-10-31
        • 1970-01-01
        • 1970-01-01
        • 2017-07-03
        • 2019-01-09
        • 2018-03-17
        相关资源
        最近更新 更多