Javascript Ajax调用未到达控制器方法
是的,有很多帖子都有类似的问题。我试着按照其中的答案进行操作,但是我的ajax调用仍然没有到达controller方法 控制器(SalesController.cs): javascript:Javascript Ajax调用未到达控制器方法,javascript,jquery,ajax,asp.net-mvc,asp.net-ajax,Javascript,Jquery,Ajax,Asp.net Mvc,Asp.net Ajax,是的,有很多帖子都有类似的问题。我试着按照其中的答案进行操作,但是我的ajax调用仍然没有到达controller方法 控制器(SalesController.cs): javascript: $('#species-select').on('change', function () { var species_id = $('#species-select').val(); console.log("species id selected " + species_id);
$('#species-select').on('change', function () {
var species_id = $('#species-select').val();
console.log("species id selected " + species_id);
alert("species id selected " + species_id);
$('#variety-select').empty();
$.ajax({
type: 'GET',
url: '@Url.Action("fillVarietiesSelect", "Sales")',
data: {species_id : species_id},
success: function (result) {
alert(result);
}
});
});
on change事件正在触发,并弹出带有正确数据的警报。我在controller方法上设置了一个断点,但执行似乎没有到达那里。尝试完全按照下面的方法执行 控制器:
[HttpGet]
public ActionResult receive2(string p)
{
ViewBag.name = p;
List<string> lst = new List<string>() { p };
return Json(lst,JsonRequestBehavior.AllowGet);
}
我已经检查了它的工作情况您的404错误告诉您@Url.Action未被视图引擎解析。@is Razor语法,因此要使其工作,您需要为C#视图使用.cshtml扩展名,或为VB视图使用.vbhtml扩展名,并使用MVC 3或更高版本。我也遇到了同样的问题,将参数从
int
更改为string
解决了问题
在我的服务器端
公共字符串RemoveByDocumentID(int DocumentID)
改成
公共字符串RemoveByDocumentID(字符串DocumentID)
解决了这个问题
在相同的上下文中,我有另一个同名的方法(重载方法)。这也是问题的原因之一,因此我将方法名称设置为唯一的。您在控制台或“请求网络”选项卡中看到任何错误吗?ASP.NET MVC抛出了太多控制台错误!但最后一个是:
传递给getElementById()的空字符串。jquery-1.10.2.js:188:0获取XHRhttp://localhost:65244/@Url.Action(%22fillVarietiesSelect%22,%20%22Sales%22)
网络面板显示获取@Url.Action(“fillVarietiesSelect”,“Sales”)的404错误。如果您使控制器操作方法返回字符串,则它可以工作。当您返回json时,问题就来了。尝试返回列表,而不是在控制器方法中将HttpGet更改为HttpPost的jsonTry。另外,将ajax类型从“GET”类型更改为“POST”类型。视图是index.cshtml
。就是这样做的。我认为问题可能是试图将val调用为int而不是字符串,并试图将其作为int发送。
[HttpGet]
public ActionResult receive2(string p)
{
ViewBag.name = p;
List<string> lst = new List<string>() { p };
return Json(lst,JsonRequestBehavior.AllowGet);
}
$.ajax({
type: "GET",
url: "Main/receive2", // the method we are calling
contentType: "application/json; charset=utf-8",
data: { "p": $("#txtname").val() },
dataType:"json",
success: function (result) {
alert("yes");
alert('Yay! It worked!tim' + result);
window.location = "http://google.com";
// Or if you are returning something
},
error: function (result) {
alert('Oh no aa :(' + result[0]);
}
});