如果我有一个名为“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.我刚检查过。
答案 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命令似乎没有任何问题,因此开始查看的最明显的地方是控制器本身。要检查的事情是:
public JsonResult jQueryGetDetailedQuote
)?Json()
方法返回对象?也许您也可以发布部分控制器代码?
我注意到在你的jQuery方法中你正在调用一个名为jQueryGetDetailedQuote的动作。如果您的意图纯粹是为了获得结果,那么您可能应该使用jQuery的$.get()
或$.getJSON()
函数来代替?