【问题标题】:Why is Post code being triggered on jQuery load?为什么在 jQuery 加载时会触发 Post 代码?
【发布时间】:2010-01-13 16:44:59
【问题描述】:

我的程序控制器中有以下功能:

Function Add(ByVal bpid As Integer) As ActionResult
    Return View(GetAvailableProcedures(bpid))
End Function

<AcceptVerbs(HttpVerbs.Post)> _
Function Add(ByVal bpid As Integer, ByVal code As String, ByVal covered As Boolean) As ActionResult
    AddProcedure(bpid, codes, covered)
    Return View("Close")
End Function

我正在通过 jQuery 加载“添加”对话框,如下所示:

$("#dialog").load(
    "/Procedures/Add",
    { bpid: 123 },
    function(data) {
        alert(data);
    });

这是失败的,因为它调用的是 Post 方法(其中“covered”不能为空)而不是 Get。我尝试用&lt;AcceptVerbs(HttpVerbs.Get)&gt; 装饰Get,但它不会改变结果。

为什么这会触发 Post,我如何让它使用 Get?我意识到我可以将名称更改为不模棱两可,但我想知道如果我只传递“bpid”,为什么它不会选择 Get。

【问题讨论】:

    标签: jquery asp.net-mvc vb.net post get


    【解决方案1】:

    来自jQuery API reference for Ajax.load

    默认情况下会执行 GET 请求 - 但如果您以 Object/Map(键/值对)的形式传入任何额外参数,则会发生 POST。作为字符串传递的额外参数仍将使用 GET 请求。

    所以我猜你可以把它改成这样:

    $("#dialog").load(
        "/Procedures/Add",
        { "bpid" : "123" },
        function(data) {
            alert(data);
        }
    );
    

    HTH,
    查尔斯

    【讨论】:

    • 是的,完全忘记了这个小事实。谢谢。
    猜你喜欢
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    相关资源
    最近更新 更多