jQuery发布到另一个控制器

时间:2010-04-23 00:13:41

标签: asp.net-mvc jquery

如果我有一个名为“HomeController”的Controller并且我在该控制器的Index页面上,我该如何向另一个控制器发送jQuery Ajax帖子。

我试过以下,

    $.post("/DetailedQuote/jQueryGetDetailedQuote", { productCode: "LPJ" }, function(newHTML) {
        alert(88);
    });

我有DetailedQuoteController

我也试过了;

post("DetailedQuote/
post("DetailedQuote.aspx/
post("/DetailedQuote.aspx/
post("/DetailedQuoteController/
post("DetailedQuoteController/
post("DetailedQuoteController.aspx/
post("/DetailedQuoteController.aspx/

仍然没有快乐。

我还应该提一下,这是在IIS 6上运行混合WebForms和MVC站点。

修改

错误返回的错误:是“错误”所以我认为这可能是404。

事实上,它是404.我刚检查过。

2 个答案:

答案 0 :(得分:2)

这应该有效:

public class DetailedQuoteController : Controller
{
    [HttpPost]
    public ActionResult GetDetailedQuote(string productCode)
    {
        return Json(new { Code = productCode, Quote = 123 });
    }
}

要调用它,首先要在视图内的某处声明一个包含该控制器地址的全局javascript变量:

var quoteAddress = '<%= Url.RouteUrl(new { controller = "DetailedQuote", action = "GetDetailedQuote" }) %>';

最后调用方法:

$(function() {
    $.post(quoteAddress, { productCode: 'LPJ' }, function(json) {
        alert(json.Quote);
    });
});

答案 1 :(得分:0)

您的jQuery命令似乎没有任何问题,因此开始查看的最明显的地方是控制器本身。要检查的事情是:

  • 您的Controller操作是否返回Json响应(例如public JsonResult jQueryGetDetailedQuote)?
  • 您是否使用Json()方法返回对象?
  • 您的动作是否使用[HttpPost]属性修饰?

也许您也可以发布部分控制器代码?

我注意到在你的jQuery方法中你正在调用一个名为jQueryGetDetailedQuote的动作。如果您的意图纯粹是为了获得结果,那么您可能应该使用jQuery的$.get()$.getJSON()函数来代替?