2010-04-23 82 views
0

如果我有一個名爲「HomeController」的控制器,並且我在該控制器的索引頁上,我該如何做一個jQuery Ajax發佈到另一個控制器。jQuery發佈到另一個控制器

我試過下面,

$.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/ 

而且還沒有喜樂。

我還要提到的是,這是運行一個混合WebForms和MVC網站上的IIS 6

編輯

被錯誤地返回的錯誤:是「錯誤」,所以我認爲這是也許一個404.

其實,這是一個404.我剛剛檢查。

+0

[你得到了什麼錯誤?](http://blogs.msdn.com/oldnewthing/archive/2010/04/21 /9999675.aspx) – SLaks 2010-04-23 00:19:38

+0

沒有錯誤,但沒有回發。 – griegs 2010-04-23 00:22:37

+0

查看Firebug或Fiddler並檢查服務器的響應。 – SLaks 2010-04-23 00:24:28

回答

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); 
    }); 
}); 
0

你的jQuery命令沒有出現任何問題,所以開始尋找的最明顯的地方在於控制器本身。需要檢查的內容是:

  • 您的Controller操作是否返回Json響應(例如public JsonResult jQueryGetDetailedQuote)?
  • 您是否在使用Json()方法返回對象?
  • 你有沒有用[HttpPost]屬性裝飾你的動作?

也許你可以發佈一部分你的控制器代碼?

我注意到,在你的jQuery方法中,你正在調用一個名爲jQueryGetDetailedQuote的動作。如果你的意圖純粹是爲了獲得結果,那麼也許你應該使用jQuery的$.get()$.getJSON()函數呢?

+0

@Phil,謝謝你的回覆。目前控制器代碼除了方法存根以外是空的。我可以愉快地發佈到同一個控制器中的一個方法,該頁面是從其他服務器提供的,而不是另一個。我懷疑它可能與IIS 6有關 – griegs 2010-04-23 00:52:15

相關問題