C# ASP.NET MVC和JQuery将信息获取到控制器
我完全不知道如何使用jQuery来处理ajax,而且似乎我尝试得越多,我就越感到困惑。此时,我只想使用jqueryajax将数据获取到控制器。我的jQueryAjax调用的一些代码是C# ASP.NET MVC和JQuery将信息获取到控制器,c#,jquery,ajax,asp.net-mvc,C#,Jquery,Ajax,Asp.net Mvc,我完全不知道如何使用jQuery来处理ajax,而且似乎我尝试得越多,我就越感到困惑。此时,我只想使用jqueryajax将数据获取到控制器。我的jQueryAjax调用的一些代码是 $(function() { $('#buttonAddLink').click(function() { var AjaxLink = { title: $("#linkTitle").val(), url: $("#linkUrl").va
$(function() {
$('#buttonAddLink').click(function() {
var AjaxLink = {
title: $("#linkTitle").val(),
url: $("#linkUrl").val()
};
$.ajax({
url: '/User/AddLink',
type: 'POST',
data: AjaxLink,
dataType: 'json',
success: function(result){
$('.added').html(result.Result).show();
}
});
});
});
这是我的控制器和我正在使用的操作。就我所知,从看几本教程来看,它“应该”是有效的,但显然我没有像我想的那样理解它
public ActionResult AddLink(string title, string url)
{
return Json(new { Result = string.Format(title + " " + url)});
}
基本上,我所要做的就是调用Ajax并返回显示,以确保数据被发送到控制器。这与构建请求的方式有关。JQuery调用将数据作为POST数据发送到用户控制器上的AddLink操作,这意味着在C#代码中,您将通过Request.Form对象访问它。根据您所要做的,您可以将jQuery URL构造为
/User/AddLink/{Title}/{URL}
这需要您在Global.ASAX文件中编写一条规则来处理此类输入。简言之,如果您只是按如下方式修改AddLink方法:
public ActionResult AddLink()
{
return Json(new { Result = string.Format(Request.Form["title"] + " " + Request.Form["url"])});
}
我相信你会得到你想要的回复。你试过写出完整的URL吗?我在本地IIS上运行的项目也有同样的问题。完整url为,但在jQuery ajax调用中使用“/user/addlink”提交到(请注意,“myproject”丢失,因为据jQuery所知,它实际上不是基本url)。您尝试过使用jQuery.post方法吗 应该是
jQuery.post("/User/AddLink",AjaxLink,function(data,textStatus)
{
if(textStatus=="success")
{
//do something with data which is the result from the call}
}
else
{
//failed somewhere along the line
}
},"json");
post值被映射到MVC调用中的参数,因此foxxtrot的代码应该是不必要的。使用诸如firebug之类的工具来确保您期望的url正在被调用 调试例程=>
如果调用url和post数据似乎正确,并且没有调用该操作,则应检查路由规则。ie是否有任何默认值在这种情况下,MVC框架将寻找包含这些默认值的方法签名(您的url规则中是否有{id}?我还没有花时间测试它,但它看起来应该可以工作,我想确定的一点是,您装饰了控制器函数,让它知道它正在寻找一个如下所示的帖子:
[HttpPost]
public ActionResult AddLink()
{
return Json(new { Result = string.Format(Request.Form["title"] + " " + Request.Form["url"])});
}
如果这些解决方案都不适合您,我今天下午应该有时间进行测试。好的,使用Ajax尝试以下代码,将数据传递给您的操作方法:
jQuery.ajax({
url: '@Url.Action("AddLink", "User")',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ title: title, url: url }),
success: function (result) { }
});
所以我花了一点时间试图弄清楚如何从AJAX调用中获取数据。我将一个JSON对象从视图传递到控制器,然后在完成时返回对象的ID 所以,我终于成功了,下面是我在视图上所做的:
var obj = {
property1 : '',
property2 : ''
};
$.ajax({
// Returns the full url
url: '@Url.Action("Method", "Controller")',
// Sends as a json object, I actually have an object that maps to my ViewModel, this is just for explaining
data: obj,
// You are telling that you are receiving a json object
dataType: 'json',
success: function (id) {
// do code here with id
}
})
对于我的控制器,我返回了一个Json对象,并将AllowGet作为JsonRequestBehavior执行
public ActionResult Method (ViewModel vm)
{
int id = ... (do something with the vm)
return Json(id, JsonRequestBehavior.AllowGet);
}
编辑:
此外,您似乎将POST作为控制器的请求类型,并且您的控制器方法没有[HttpPost]
注释。情况也可能如此
我希望这有帮助干杯 您可以使用Request.Form访问它,但是如果可以的话,ASP.NET MVC框架也会参数化表单值(尽管如果在url参数和表单中看到相同的值会有点混淆)。您是否使用firebug检查发送的数据?是否正在调用操作(这与路由问题有关)?您只需不断发布这段代码片段,作为您可以找到的每个mvc/ajax问题的答案。这实际上在这里没有帮助-1.