[英]Call a different Controller action from view of a controller though javascript
我有一個Home控制器,其視圖有一個按鈕。我想在按鈕單擊時調用一個名為SearchSpace的控制器。
查看:
<script type="text/javascript">
var data = { "id": "1" }
function search() {
alert("hello" + JSON.stringify(data));
$.ajax({
url: '/SearchSpace/searchSpace',
type: 'POST',
dataType: "json",
contentType: 'application/json',
data: JSON.stringify(data),
success: function (returnPayload) {
console && console.log("request succeeded");
},
error: function (xhr, ajaxOptions, thrownError) {
console && console.log("request failed");
}
});
}
</script>
調節器
[HttpGet]
public ActionResult searchSpace()
{
return View();
}
[HttpPost]
public ActionResult searchSpace(SearchSpace search)
{
//code
return View();
}
路由配置
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
警報正在調用,但沒有移到SearchSpace Controller。請幫助我。
嘗試這個
<button id="click"><a href="/Home/About">Click me</a>
</button>
問題在於預期的jQuery.ajax()
數據類型,因為您為json
分配了dataType
屬性。 從jQuery API文檔中 :
dataType(默認值:Intelligent Guess(xml,json,腳本或html))類型:String期望從服務器返回的數據類型。 如果未指定,則jQuery將嘗試根據響應的MIME類型來推斷它(XML MIME類型將產生XML,在1.4中,JSON將產生JavaScript對象,在1.4腳本中,腳本將執行該腳本,而其他任何內容將是以字符串形式返回)。 可用的類型(以及作為第一個參數傳遞給您的成功回調的結果)是:
...“ json”:將響應評估為JSON並返回一個JavaScript對象。 JSON數據是嚴格解析的。 任何格式錯誤的JSON都會被拒絕,並引發解析錯誤。 從jQuery 1.9開始,空響應也被拒絕; 服務器應返回null或{}的響應。 (有關正確的JSON格式的更多信息,請參見json.org。)
至少有兩種方法可以解決此問題:
首先,省略dataType
屬性:
$.ajax({
url: '/SearchSpace/searchSpace',
type: 'POST',
contentType: 'application/json',
//dataType: "json", << delete this line or comment it
data: JSON.stringify(data),
success: function (data) {
console && console.log(data);
},
error: function (xhr, ajaxOptions, thrownError) {
console && console.log("request failed");
}
});
其次,從響應返回JSON類型數據:
[HttpPost]
public ActionResult searchSpace(int? id)
{
if (Request.IsAjaxRequest() && id != null)
{
return Json(new { data = "Requested data is: " + id.ToString() });
}
return View();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.