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

Ajax调用到MVC控制器-网址问题

龚盛
2023-03-14
问题内容

我看了以前发布的jQuery / MVC问题,但没有找到可行的答案。

我有以下JavaScript代码:

$.ajax({
 type: "POST",
 url: '@Url.Action("Search","Controller")',
 data: "{queryString:'" + searchVal + "'}",
 contentType: "application/json; charset=utf-8",
 dataType: "html",
 success: function (data) {
 alert("here" + data.d.toString());
 }
});

调用网址时,帖子看起来像:

NetworkError: 500 Internal Server Error - <a href="http://localhost/Web/Navigation/@Url.Action(%22Search%22,%22Chat%22)"></a>

有人可以向我解释为什么它会这样返回它(背后的逻辑)并为我提供有效的解决方案。提前致谢!
PS:其他信息:%22是<<“ >>字符的URL编码参考


问题答案:

为了使其正常工作,必须将Javascript置于Razor视图中,以便该行

@Url.Action("Action","Controller")

由Razor解析并替换实际值。

如果您不想将Javascript移到View中,可以查看在视图中创建一个设置对象,然后从Javascript文件中引用该对象。

例如

var MyAppUrlSettings = {
    MyUsefulUrl : '@Url.Action("Action","Controller")'
}

并在您的.js文件

$.ajax({
 type: "POST",
 url: MyAppUrlSettings.MyUsefulUrl,
 data: "{queryString:'" + searchVal + "'}",
 contentType: "application/json; charset=utf-8",
 dataType: "html",
 success: function (data) {
 alert("here" + data.d.toString());
});

或者,也可以利用HtmlHelpers中的框架内置的Ajax方法,使您无需通过JS代码“污染”视图即可实现相同的目标。



 类似资料:
  • 问题内容: 我试图通过传递一些参数的AJAX调用MVC控制器动作。 我有时 在此应用程序中执行此操作 ,并且效果很好。 我不知道为什么只有 这一个 无效。 这是我的控制器方法: 提醒一下,我正在做我在其他Ajax调用中所做的事情,但是特别是 只有这一条 不起作用。 有人有什么主意吗? 问题答案: 始终使用或html helper方法来构建操作方法的url。无论您当前的页面/路径如何,它都会正确构建

  • 问题内容: 我想要的是将txtComments的值从View(使用jquery / ajax)传递给Controller。 问题是ajax / jquery不接受脚本标签作为字符串。意思是,当我在txtComments中输入任何脚本/ html标记时,ajax会进入错误功能,而无法进入控制器。 这是jQuery: 这是控制器: 我也试过了逃脱(注释),但是还是一样。 问题答案: 尝试使用该功能的选

  • 问题内容: 我试图实现对包含复杂对象作为参数的控制器操作方法的JQueryAJAX调用。我读了很多博客,并尝试了从中学习到的几种技巧。 我想触发一个异步发布,当用户在某个字段上制表符时调用该异步发布(不是表单保存发布–如我发现的其他示例所示)。 我的意图是: 在客户端上实例化一个对象(不是为View提供类型的ViewModel); 使用视图中多个字段中的数据填充对象; 将此对象转换为JSON; 使

  • 问题内容: 我一直在这里看问题:将MVCajaxjson发布到控制器操作方法,但不幸的是,它似乎并没有帮助我。我的几乎完全相同,除了我的方法签名(但是我已经尝试过了,但仍然没有被击中)。 jQuery的 控制者 但是,无论我尝试什么,我都不会受到打击。通过调试,我知道它发送了一个请求,每次都会得到一个错误。 问题答案: 您的操作需要字符串参数,但是您要发送一个复合对象。 您需要创建一个与您要发送的

  • 问题内容: 我的控制器: 我想通过AJAX将参数发布到控制器。传递并不是问题,但是我无法发布。 我的JavaScript代码: 我尝试了一个测试阵列,但没有成功。:(我也尝试设置,但也没有成功… 该贴到我的控制器总是空。 问题答案: 您可以定义一个视图模型: 然后调整您的控制器动作以将此视图模型作为参数: 最后调用它:

  • 问题内容: 在我的ASP.NET 5 MVC 6应用程序中,我想用Ajax发布一些数据到我的控制器。我已经使用ASP.NET MVC 5做到了这一点,并且在空白的ASP.NET MVC 5项目中测试了完全相同的代码,并且可以正常工作,但是对于新版本,我做不到,我也不知道为什么。通过Ajax调用,我可以转到控制器,创建模型,但是字段为null(对于布尔值,则为false)。这是我的代码: scrip