【问题标题】:ASP.NET, AJAX - 403 forbiddenASP.NET、AJAX - 403 禁止
【发布时间】:2014-03-10 10:00:29
【问题描述】:

我收到了错误

**POST http://localhost:34169/createNew.aspx.cs/Confirm 403 (Forbidden) **

当我尝试使用 Jquery AJAX 调用 CodeBehind 函数时。

我的代码:

function CallConfirmMethod(str) {
            $.ajax(
            {
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "createNew.aspx.cs/Confirm",
                data: "{'smallPos': " + str + "}",
                success: function (result) { alert("successful!"); }
            });
        }

还有 CodeBehind 功能(实际上并没有做任何事情,只是为了测试一下):

[System.Web.Services.WebMethod(BufferResponse = false)]
        protected void Confirm(string str) {
            // SKICKA SQL-QUERY
            Response.Write("Funktionen kallas! " + str);
        }

【问题讨论】:

  • 你在用什么? IIS 还是 ASP.NET 开发服务器?
  • 你试过 GET 而不是 POST 吗?

标签: asp.net ajax


【解决方案1】:

我认为您的错误在于 url createNew.aspx.cs/Confirm 您应该将其更改为 createNew.aspx/Confirm。也是好文章Calling ASP.Net WebMethod using jQuery AJAX

【讨论】:

  • 你是对的@kolesso。服务器正在禁止响应,因为它已针对代码隐藏文件请求,服务器未提供(禁止)该文件。
  • 将 URL 更改为 createNew.aspx/Confirm 给我错误 500(加载资源失败:服务器响应状态为 500 (Internal Server Error)),我猜这是一个步骤至少是正确的方向。谢谢!
  • 是的。现在问题在于将参​​数传递给Confirm 方法,我认为。
  • 也许改变这个数据:"{'smallPos':" + str + "}",数据:{"str": str}。
【解决方案2】:

也许你得到 500,因为你还没有关闭响应

[System.Web.Services.WebMethod(BufferResponse = false)]
protected void Confirm(string str) {
  // SKICKA SQL-QUERY
  Response.Clear();
  Response.ContentType = "application/text";
  Response.StatusCode = 200;
  Response.Write("Funktionen kallas! " + str);
  Response.Flush();
  Response.End();   
}

如果您想在 json 中发送响应,这是文章 AJAX to web method not returning JSON

【讨论】:

    猜你喜欢
    • 2012-09-19
    • 2015-02-25
    • 2021-05-07
    • 2012-08-13
    • 2018-01-30
    • 2023-04-09
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多