我有一个asp.net(非mvc)的ajax代码来调用webMethod从服务器获取请求的其他数据。但我似乎无法弄清楚在MVC中提供我的JQuery的URL。
<script type="text/javascript" language="javascript">
function SubmitAjax(url, message, successFunc, errorFunc) {
$.ajax({
type:"POST",
url:url,
data:message,
contentType: "application/json; charset=utf-8",
dataType: "json",
success:successFunc,
error:errorFunc
});
};
我不想将整个相关数据列表传递给每个到达页面的人的选择列表,因为并非所有人都需要此功能。所以我想通过JQuery调用控制器或webmethod,但似乎无法找到如何解决MVC中的URL。
我注意到这篇文章: JQuery Ajax call gets resolved to the current Controller Folder, Instead of root Folder
是$ .getJson的mvc方法吗?这对我的用例来说是一个很好的解决方案吗?我只需要返回一个字符串url,或者如果找不到我正在寻找的空字符串。我是否需要为$ .getJSon方法添加一个?是MVC的一部分还是JQuery的一部分?前导斜杠是指向Application root还是server root?
答案 0 :(得分:3)
试试这篇文章: Basic AJAX example with ASP.NET MVC?
或者这个: How to get the Json object for drop down?
他们应该给你一些指示。
本质上,$ .getJson是一个jQuery方法,而不是MVC方法,但是想要将它与MVC控制器结合使用,返回一个Json结果。
答案 1 :(得分:2)
嗯,我的猜测是你在构建url时遇到了麻烦。如果你在url之前没有斜杠,它将相对于你当前的url。因此,如果当前网址为:/Home/Index
并且您有以下链接:<a href="Ticket/CheckForInstaller">Text</a>
,则该链接将指向以下网址:/Home/Index/Ticket/CheckForInstaller
。这始终是浏览器中的行为。如果您在webforms应用程序的文件夹中有一个页面,则会发生同样的情况。与任何其他Web框架相比,asp.net mvc url没有什么不同。你想要的网址可能是这个:/Ticket/CheckForInstaller
。
但是,asp.net mvc框架可以为您提供帮助程序,这样您就不必对任何URL进行硬编码。你可以这样做:
<%=Url.Action("Ticket", "CheckForInstaller")%>
但唯一能做的就是找到指向该操作的相应url(“/ Ticket / CheckForInstaller”,具体取决于你的路由)并写出来。
答案 2 :(得分:1)
您可以使用$ .getJSON(url,[data],[callback(data)]),其中data是您返回的json数据对象。
或者您可以使用$ .post(url,[data],[callback(data)]),其中数据是您回溯的字符串/数据对象。
url:它是你的控制器/动作/脚本的相对URL,它返回json / data。
以上是jquery方法,如果你已经包含了jquery js文件,你就可以使用它。
答案 3 :(得分:1)
这是我最近一直在做的事情,而且一切正常。
获取根路径并将其存储在隐藏的输入中(替换[with&lt;)
[input id =“urlBase”type =“hidden”value =“&lt;%= Url.Content(”〜“)%&gt;” /&GT;
获取该输入的值并将其存储在js中(在这种情况下使用jquery)
_urlBase = $(“#urlBase”)。val();
使用该变量调用控制器
$ .ajax({type:“GET”,url:_urlBase +“Controller / Action”,dataType:“json”});
答案 4 :(得分:0)
问题是控制器上的webMethod标签,在asp.net中是必需的或有用的,但不是在asp.net mvc中