【问题标题】:Run Controller method from JavaScript从 JavaScript 运行控制器方法
【发布时间】:2013-01-17 18:35:40
【问题描述】:

这看起来很简单,但不仅对我有用。我有以下代码可以从我的 JavaScript 文件中运行 HomeController 中的方法:

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-ajax.min.js、MicrosoftMvcAjax.js、MicrosoftAjax.js、validate.unobtrusive.min.js、jquery.validate.min.js

但 is 不只是工作。什么都没发生。该功能的第一个警报确实出现了。但之后就没有别的了。

【问题讨论】:

  • 您是否查看过 Chrome 工具或 Firebug 以确保 URL 被点击并返回非错误状态代码?
  • 请问我该怎么做?非常感谢任何帮助
  • 在 Chrome 中按 F12,开发工具将显示在浏览器窗口的底部。点击网络标签,您可以查看您网站的 HTTP 流量。
  • 您在第一行缺少{,在function(id) 之后 - 不知道这是不是拼写错误,或者它是否会产生任何影响。如果它在您的代码中,可能会导致您的函数只是 alert("here"),这可以解释您的行为 - 我不确定浏览器可能会采取什么措施来应对。
  • 按 F12 键并单击“网络”选项卡,然后试一试是否正在发出请求。您还应该设置一个失败回调函数以打印出任何可能的错误。如果您遇到错误,您可能看不到任何内容。

标签: asp.net-mvc jquery


【解决方案1】:

指定的网址错误。而不是url: '/HomeController/MethodName' 我把url: '/Home/MethodName', 虽然我的控制器名称是HomeController

【讨论】:

    【解决方案2】:

    您应该让 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);      
            }
        });
    }
    

    【讨论】:

      【解决方案3】:

      您犯了格式错误。此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);      
        }
       });
      

      【讨论】:

      • 我的错。这篇文章中的拼写错误。我的代码没有拼写错误,但仍然无法正常工作
      猜你喜欢
      • 2018-03-20
      • 2014-11-06
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 2014-05-17
      相关资源
      最近更新 更多