当前位置: 首页 > 面试题库 >

对MVC控制器的Ajax调用返回“找不到”

梁兴文
2023-03-14
问题内容

我试图通过传递一些参数的AJAX调用MVC控制器动作。
我有时 在此应用程序中执行此操作 ,并且效果很好。
我不知道为什么只有 这一个 无效。

 function excluirDetalhe(button, tab) {
     var index = $(button).closest('tr').index();
     var myTable = document.getElementById(tab);
     var id = myTable.rows[index].cells[0].innerHTML.trim();
     $('#' + tab + ' tr:eq(' + index + ')').remove();
         $.ajax({                
             traditional: true,
             url: "entidades/gravaCookie",
             type: 'post',
             data: { id: id, detalhe: "E" },
             error: function (jqXHR, textStatus, errorThrown) {
                 alert(errorThrown);
             }
     });
 }

这是我的控制器方法:

public void gravaCookie(string id, string detalhe)
{
     string key = "een_id";
     if (detalhe.Equals("E"))
         key = "een_id";
     if (detalhe.Equals("C"))
         key = "eco_id";
     if (detalhe.Equals("B"))
         key = "eba_id";
     cookie.Values.Add(key, id);
}

提醒一下,我正在做我在其他Ajax调用中所做的事情,但是特别是 只有这一条 不起作用。
有人有什么主意吗?


问题答案:

始终使用Url.ActionUrl.RouteUrlhtml
helper方法来构建操作方法的url。无论您当前的页面/路径如何,它都会正确构建网址。

假设您的js代码在razor视图中,则可以直接使用Url.Action方法并将其分配给js变量。

url: "@Url.Action("gravaCookie","entidades")",

假设您有这样的操作方法,它应该可以工作

[HttpPost]
public ActionResult gravaCookie(string id,string detalhe)
{
  // to do : Return something
}

如果您的JavaScript位于单独的javascript文件中,则可以使用上述帮助方法在razor视图中构建url,并将其保存在您的外部js文件代码可以访问的变量中。
一定要确保使用javascript名称空间,以避免全局javascript变量可能出现的问题

@section Scripts
{
 <script>
    var myApp = myApp || {};
    myApp.Urls = myApp.Urls || {};
    myApp.Urls.baseUrl = '@Url.Content("~")';
    myApp.Urls.gravaCookieUrl = '@Url.Action("gravaCookie","entidades")';
 </script>
 <script src="~/Scripts/PageSpecificExternalJsFile.js"></script>

}

PageSpecificExternalJsFile.js文件中,您可以像

var urlToGrava= myApp.Urls.gravaCookieUrl
// Or With the base url, you may safely add the remaining url route.
var urlToGrava2= myApp.Urls.baseUrl+"entidades/gravaCookie";
// Use urlToGrava now

编辑

如果您只关心站点的根/基URL,则可以简单地/用作URL的第一个字符。

var urlToGrava2= "/entidades/gravaCookie";


 类似资料:
  • 问题内容: 我看了以前发布的jQuery / MVC问题,但没有找到可行的答案。 我有以下JavaScript代码: 调用网址时,帖子看起来像: 有人可以向我解释为什么它会这样返回它(背后的逻辑)并为我提供有效的解决方案。提前致谢! PS:其他信息:%22是<<“ >>字符的URL编码参考 问题答案: 为了使其正常工作,必须将Javascript置于Razor视图中,以便该行 由Razor解析并替

  • 问题内容: 我必须从控制器返回员工列表以响应jQuery AJAX请求。我应该怎么做? 我的控制器: 相关视图中的AJAX代码: 提前致谢。 问题答案: 在spring,当你需要对象序列化,反序列化和消息转换时。在这种情况下,你需要使用和注释控制器处理程序方法。 哪里: @ResponseBody:将通知spring尝试转换其返回值并将其自动写入http响应。 @RequestBody:将通知sp

  • 我正在使用springmvc4,并试图将一个简单的返回到ajax-从我的控制器返回到jsp文件。 控制器: 来自 jsp 文件的阿贾克斯: 但我没有收到任何警报,而只是错误。 然而,更改代码以返回一个简单的字符串也可以。控制器: Ajax: 按预期从ajax发出警报和。 我按照预期添加了jackson jar文件(通过pom.xml): 我是不是遗漏了什么?我只想返回一个简单的映射结构(或者以后其

  • 问题内容: 我的MVC控制器中有一个简单的方法: 这是一个区域对象: 这就是我从视图中调用方法的方式: 我已经检查了控制器中的方法,并创建了Area对象的列表。您有什么主意,为什么从视图中调用该方法时为什么会出现500内部服务器错误?当我返回其他任何内容(例如Dictionary对象)时,一切正常,只是当我打算将Areas列表转换为Json时,我得到一个错误。 问题答案: 由于类包含和包含的集合,

  • 你好,我是拉威尔的新手,也许这对你们来说太傻了。在laravel 8中,路由web。php我创建了一条如下的路线: 我想问的是,我们也可以从回调视图返回控制器吗?所以在路由 /editprofile中,第二个参数不是'App\Http\Controller\SiteController@edit_profile',而是一个回调函数,如路由'/home'。 但是它返回错误哈哈。假设我不想用__con

  • 我得到这个错误消息: 无法写入JSON: 未找到用于java.io.FileDescriptor类的序列化程序,也未发现用于创建BeanSerializer的属性 (为了避免异常,禁用SerializationFeature.fail_on_empty_beans)) (通过引用链: org.springframework.core.io.filesystemResource[\“outputSt