jQuery的$.post方法

3

你好,我有一个类似这样的方法:

 [AcceptVerbs(HttpVerbs.Post)]
        public JsonResult GetPayeesJson(long id)
        {
             ///TODO:
        }

现在它是通过JavaScript函数调用的,像这样运行良好:

$.post("/Payee/GetPayeesJson/" + payerData.Id, null, function (data) {
               fillPayeeCache(data, payerData.Id);
               fillPayeeSelect(payeeCache[payerData.Id]);
            }, "json");

除了传递给GetPayeesJson(long id)方法的id之外,我还想传递一个包含表单名称的字符串。因此,我希望可以向这样的一个方法进行POST调用:
        [AcceptVerbs(HttpVerbs.Post)]
        public JsonResult GetPayeesJson(long id, string formName)
        {
           //TODO:
        }

我该如何做到这一点?谢谢您提前答复!
4个回答

1

示例:请求test.php页面并发送一些附加数据(同时仍然忽略返回结果)。

$.post("test.php", { name: "John", time: "2pm" } );


来源:http://api.jquery.com/jQuery.post/


0

这个怎么样?

$.ajax({
    url: 'example.php',
    dataType: 'json',
    type: 'POST',
    data:  { 
        formName: 'formName' 
    },
    success: function (response) {

    },
    error: function(response, data) {
      alert("Oops... Looks like we're having some difficulties."); 
   }         
});

这个默认为“post”,但我认为在这里使用 type: 'POST' 明确指定会很有用,因为 OP 的操作方法需要它。 - Chris Farmer

0

你需要将那些信息作为提交的数据的一部分传递。

所以针对你的具体示例:

$.post("/Payee/GetPayeesJson/" + payerData.Id, 
       {'formName':'value to be passed here'}, 
       function (data) {
               fillPayeeCache(data, payerData.Id);
               fillPayeeSelect(payeeCache[payerData.Id]);
            }, "json");

应该做你需要的事情。


0

最简单的方法可能是在$.post调用中将formName作为查询字符串变量添加到url中。(例如,在您的url中添加"?formName=whatever") 您还可以将其作为名为formName的表单变量发布。

此行为可被覆盖,但默认情况下,您可以使用适当命名的查询字符串或表单变量。

附带说明:您还应该能够仅使用[HttpPost]作为GetPayeesJson方法属性的简短形式。

更具体地说,将其添加为查询字符串 -> "/Payee/GetPayeesJson/" + payerData.Id + "?formName=whateverYourFormIsNamed"

将其添加为表单变量 -> 请参见Toast的回复

这两种方法都可以让您使用指定的控制器操作语法。


谢谢您的回答。您能更具体地说明吗?我正在使用asp.net MVC框架,并将此调用传递给一个控制器类。 - SaiBand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接