2013-01-17 78 views
1

這似乎很容易,但不僅僅是爲我工作。我有以下代碼從我的JavaScript文件中我HomeController運行的方法:從JavaScript運行控制器方法

function(id) { 
    alert("here"); 
    $.ajax({ 
     url: '/HomeController/MethodName', 
     data: { id: id }, 
     success: function(data){ 
      alert('Sucess ' + data);  
     } 
    }); 
} 

我的方法是

public string MethodName(int id) 
{ 
    return id.ToString() + "test "; 
} 

調用JavaScript的觀點以下腳本定義:jquery.unobtrusive阿賈克斯.min.js,MicrosoftMvcAjax.js,MicrosoftAjax.js,validate.unobtrusive.min.js,jquery.validate.min.js

但是不僅僅是工作。什麼都沒發生。該功能的第一個警報顯示出來。但之後沒有別的。

+2

你吃過在Chrome工具或Firebug的看看,以確保該URL是被擊中並返回一個非錯誤狀態代碼? – levelnis

+0

我該怎麼做?任何幫助將不勝感激 – jpo

+0

在Chrome中點擊F12,開發工具將顯示在瀏覽器窗口的底部。點擊網絡標籤,您可以查看您網站的HTTP流量。 – levelnis

回答

1

指定的網址有誤。而不是url: '/HomeController/MethodName'我把url: '/Home/MethodName',雖然我的控制器名稱是HomeController

0

你犯了格式錯誤。此url字符串屬性未關閉。您還在data屬性末尾丟失逗號。

function(id) 
alert("here"); 
$.ajax({ 
    url: '/HomeController/MethodName', // last single quote was missing 
    data: { id: id }, // comma was missing 
    success: function(data){ 
    alert('Sucess ' + data);  
    } 
}); 
+0

我的不好。在這篇文章中錯字錯誤。我的代碼沒有錯別字,但不起作用 – jpo

1

你應該讓MVC框架的力量照顧渲染的URL。如果你改變你的路由,這可能意味着你必須繞過所有的HTML頁面並更新類似的參考。用這種方法可以避免上述問題。

使用

<%= Html.RenderAction("MethodName", "Home") %> 

function(id) { 
    alert("here"); 
    $.ajax({ 
     url: <%= Html.RenderAction("MethodName", "Home") %>, 
     data: { id: id }, 
     success: function(data){ 
      alert('Sucess ' + data);  
     } 
    }); 
}