代码之家  ›  专栏  ›  技术社区  ›  gfrizzle

为什么在jQuery加载时会触发Post代码?

  •  1
  • gfrizzle  · 技术社区  · 16 年前

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

    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
    

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

    这是失败的,因为它调用的是Post方法(其中“covered”不能为空),而不是Get。我试着用它来装饰房间 <AcceptVerbs(HttpVerbs.Get)> ,但这不会改变结果。

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

    1 回复  |  直到 16 年前
        1
  •  3
  •   Charlino    16 年前

    jQuery API reference for Ajax.load :

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

    所以我想你可以把它改成:

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

    嗯,,
    查尔斯