2013-01-17 45 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);  
     } 
    }); 
}