是的,有很多帖子都有类似的问题。我已经尝试按照其中的答案进行操作,但是我的ajax调用仍然没有达到控制器方法。
controller(SalesController.cs):
[HttpGet]
public JsonResult fillVarietiesSelect(int species_id)
{
String[] alist = {"a","b","c"};
return Json(alist, JsonRequestBehavior.AllowGet);
}
的javascript:
$('#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 change事件正在触发,警报会弹出正确的数据。我在控制器方法中设置了断点,但执行似乎没有达到目的。
答案 0 :(得分:1)
尝试完全像下面的
控制器:
[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]);
}
});
我检查了它的工作
答案 1 :(得分:1)
我遇到了同样的问题,将参数从<rule_name>
更改为int
解决了问题。
在服务器端,我有,
public string RemoveByDocumentID(int DocumentID)
将其更改为
public string RemoveByDocumentID(string DocumentID)
解决了这个问题。
在相同的上下文中,我有另一个同名的方法(重载方法)。这也是导致问题的原因,因此我将方法名称设为独特。
答案 2 :(得分:0)
您的404错误告诉您视频引擎未解析@ Url.Action。 @是Razor语法,因此要使用此功能,您需要为C#视图使用.cshtml扩展名,或者为VB视图使用.vbhtml,并使用MVC 3或更高版本。