0

我正在使用 jquery 创建一个发布请求,但没有得到预期的结果。我只是想返回true

这是我的代码:

function deleteAllUsers() {
    $.post('/Account/DeleteAllUsers', function (data) {
        alert('post');
        alert(data);
    });
}

public JsonResult DeleteAllUsers()
    {
        var t = System.Web.Helpers.Json.Encode(new {ts = true});
        return Json(t);
    }

我也刚刚在后面的代码中尝试过这个:

public JsonResult DeleteAllUsers()
    {
        return Json(true);
    }

并且每次“alert(data)”返回整个网页的字符串。我究竟做错了什么?为什么这不返回true?

另外,当我进行 ajax 调用时,如何让调试器单步执行后面的代码?

4

4 回答 4

0

如果你的调试器没有达到你的断点,我猜你没有达到你的方法。听起来您的 ajax 调用正在访问您所在的当前网址。如果您使用 fiddler 或 firebug 检查您的 ajax 请求,您能否确认您正在使用您的操作方法?也许您需要将 javascript 更改为$.get('/account/deleteallusers',blah blah blah....

于 2013-06-05T18:35:20.553 回答
0

我终于想通了...

问题是 DeleteAllUsers 没有经过身份验证。所以响应是登录页面。它要求我登录才能访问 DeleteAllUsers 功能。所以我授权访问这个功能。

<location path="Account/DeleteAllUsers">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>

我像这样装饰了我的方法......

    [HttpPost]
    [AllowAnonymous]
    public JsonResult DeleteAllUsers()
    {
        return Json(true);
    }

感谢大家的帮助!

于 2013-06-05T20:29:40.333 回答
0

[HttpPost]属性放在您尝试调用的方法之上,如下所示:

[HttpGet]
public ActionResult DeleteAllUsers()
{
    return View();
}
[HttpPost]
public JsonResult DeleteAllUsers()
{
    return Json(true);
}
于 2013-06-05T18:36:04.930 回答
0

您需要在返回的 Json 上使用 AllowGet

return Json(new { ts = true }, JsonRequestBehavior.AllowGet);

如果这不起作用,您可以发布“数据”包含的消息/html吗?

编辑: 很抱歉获取/发布详细信息:(

顺便说一句,你不应该返回 true 或 false 来知道你的 HttpPost 是否有效,相反,你应该使用 HTTPStatusCode;)

就像是:

return new HttpStatusCodeResult(HttpStatusCode.OK);
于 2013-06-05T18:37:59.733 回答