【发布时间】:2012-06-16 08:39:06
【问题描述】:
我试图使用 HTML 按钮调用 c# 类方法。 在另一个主题中,人们建议我使用 AJAX。我查看了不同的教程并尝试实现它,但到目前为止它对我不起作用。
现在我只想让按钮给我一个弹出窗口(只是为了让我知道正在调用该方法)我要调用的方法是来自 HomeController 类的 setLang(string lang)
这就是我的 onclick 事件
<input type="submit" onclick="setLanguage();" value="submit">
这是脚本部分,我在同一页面中有这个
<script type="text/javascript">
function setLanguage() {
var lang = "en";
$.post('@Url.Action("setLang","HomeController")/' + lang,function(){
//i'm not expecting a result to process
});
}
</script>
但是当我点击我的按钮时没有任何反应。
我错过了什么吗?
编辑:函数被调用,但回调没有
更新:仍然无法正常工作,这是我当前的代码(根据要求)
按钮(index.aspx)
<input type="button" onclick="setLanguage();" value="submit">
函数(index.aspx)
<script type="text/javascript">
function setLanguage() {
alert("this message shows");
$.post('Url.Action("setLang","Home")/?lang=' + lang,
function (data) {
alert("this message does not");
});
}
</script>
在 HomeController.cs 中
public JsonResult setLang(string lang)
{
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(lang);
.....//a lot more code, until it reaches
return Json("Language: " + lang);
}
【问题讨论】:
-
什么是 lang 在这种情况下?你应该做 var lang = "en";
-
如果您想要弹出消息,请改用 JavaScript。回调函数中的
alert('test') -
@DeadManWalking
System.Windows.Forms用于 Windows 窗体,而不是 asp.net 应用程序。从您的控制器操作中,您可能希望向 AJAX 调用返回一些值。 -
@DeadManWalking 在通过 AJAX 调用方法时,最好返回一些东西给它。否则你怎么知道它起作用了?
-
@DeadManWalking 如果您不断更改示例代码,则很难遵循。如果您使用更改的代码添加更新而不是替换它,它会更容易。