Javascript 向mvc控制器发出.ajax请求-但.done函数从未执行
基本上我是这样做的: 在body-onload方法中,我调用这个javascript函数Javascript 向mvc控制器发出.ajax请求-但.done函数从未执行,javascript,asp.net-mvc,Javascript,Asp.net Mvc,基本上我是这样做的: 在body-onload方法中,我调用这个javascript函数 function TestN() { var list = new Array(); var allElements = document.getElementsByTagName('*'); $("*[wordNum]").each(function () {
function TestN() {
var list = new Array();
var allElements = document.getElementsByTagName('*');
$("*[wordNum]").each(function ()
{
var endRes = {
ControllerName: this.id,
WordNumber: this.getAttribute("wordNum")
};
list.push(endRes);
});
jQuery.ajax({
url:' @Url.Action("Translate")' ,
contentType: "application/json",
dataType: "json",
data: { List : JSON.stringify(list) }
,
traditional: true
})
}
它所做的-它使用属性“WrdNum”搜索所有控件,然后我向MVC Translate操作发出ajax请求
在Translate操作中,我向一个web服务发出请求,该服务填充类型为-TranslateModel
public ActionResult Translate(string List)
{
List<TranslateModel>listto = WebServiceBea.TranslateList(1, List);
return View(listto);
}
所以基本上我的问题是->我应该返回到视图->的类型是什么->以及如何将该列表返回到javascript或jquery函数,该函数必须使用该列表中的记录设置一些html控件的innerHtml属性**
我知道这很奇怪,但那是我的任务
编辑 非常感谢你的帮助。但现在我有另一个问题: 在我更改javascript并将。方法,以便从服务器获取数据。它看起来像这样: $(文档).ready(函数(){ var list=新数组() ,, 传统的:是的
}).done(function (result)
{
alert ("HII") ;
});
});
无论我在.done函数中输入什么,它都不会执行。控制器似乎不知道在哪里返回结果。|我现在不知道。如果我从.layout页面(位于document ready.s上)发出此请求,会不会发生什么情况?这看起来是一个值得使用的地方。 下面是一个在mvc视图中使用knockout的好方法 因此,该方法将只返回json,而视图将不会有一个模型,而只是一个获取json的调用 如果要使用$.post提取数据,可以将列表作为json返回
[AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)]
public ActionResult Translate(string List)
{
List<TranslateModel>listto = WebServiceBea.TranslateList(1, modelObj);
return Json(listto);
}
这看起来是一个好地方。 下面是一个在mvc视图中使用knockout的好方法 因此,该方法将只返回json,而视图将不会有一个模型,而只是一个获取json的调用 如果要使用$.post提取数据,可以将列表作为json返回
[AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)]
public ActionResult Translate(string List)
{
List<TranslateModel>listto = WebServiceBea.TranslateList(1, modelObj);
return Json(listto);
}
您已经有了答案,但是考虑以下情况,您可能有JavaScript调用的控制器动作:
public ActionResult GetItems(string id)
{
var MyList = db.GetItems(id);//returns a list of items
if (Request.IsAjaxRequest())//called from javascript via AJAX
{
return Json(MyList, JsonRequestBehavior.AllowGet);
}
else //regular hyperlink click
{
return View(MyList);
}
}
要使用列表,请执行以下操作
$.ajax({url: "'@Url.Content("~/controllername/GetItems")?id=' + id"})
.done(function(result){
var mylist = result.responseText.evalJSON();//this is your list of items
for(i=0;i<mylist .length;i++)
{
var myitem = mylist[i];
}
});
$.ajax({url:'@url.Content(“~/controllername/GetItems”)?id='+id})
.完成(功能(结果){
var mylist=result.responseText.evalJSON();//这是您的项目列表
对于(i=0;i),您已经得到了答案,但是考虑以下情况,您可能有JavaScript调用的控制器动作:
public ActionResult GetItems(string id)
{
var MyList = db.GetItems(id);//returns a list of items
if (Request.IsAjaxRequest())//called from javascript via AJAX
{
return Json(MyList, JsonRequestBehavior.AllowGet);
}
else //regular hyperlink click
{
return View(MyList);
}
}
要使用列表,请执行以下操作
$.ajax({url: "'@Url.Content("~/controllername/GetItems")?id=' + id"})
.done(function(result){
var mylist = result.responseText.evalJSON();//this is your list of items
for(i=0;i<mylist .length;i++)
{
var myitem = mylist[i];
}
});
$.ajax({url:'@url.Content(“~/controllername/GetItems”)?id='+id})
.完成(功能(结果){
var mylist=result.responseText.evalJSON();//这是您的项目列表
对于(i=0;iNEVERRR-NEVERRR-Forge-to-putjsonRequestBehavior.AllowGet
非常感谢大家帮助NEVERRR NEVERRR Forge放置jsonRequestBehavior.AllowGet
非常感谢大家的帮助这是否只从javascript调用?如果是,最简单的方法是将列表返回为json并用javascript解析?这是否只从javascript调用?如果是,最简单的方法是将列表返回为json并用javascript解析?您好-非常感谢太多了!我添加了一些代码,我想这些代码会澄清这种情况。我真的非常感谢您提供更多的帮助。将列表发送到操作的目的是什么?您不想根据一些变量从操作中获取列表吗?只需要一些澄清。正如我所说的,当MVC停止呈现视图并且html准备就绪时,我有一些带有属性“wrdNum”的特殊控件。我收集它们的值并将它们发送给Action Translate。然后,基于该参数,Translate Action填充一个列表;不知何故,javascript函数必须接收该列表,以便我可以设置这些特殊控件的某些属性,但忽略了该部分{blush}哈哈。我只是对我的答案做了一点修改。希望它能在另一方面有所帮助:例如,当我发出ajax请求时,我认为有一个属性:Success:SomeFunction(带有该列表中的参数);或者。done:DOSomething()您好-非常感谢!我添加了一些代码,我想这些代码会澄清情况。我真的非常感谢您提供更多帮助将列表发送到操作的目的是什么?您不想从基于某个变量的操作中获取列表吗?只需要一些澄清。正如我所说的,当MVC停止呈现视图和html时,我我已经准备好了一些带有属性“wrdNum”的特殊控件。我收集它们的值并将它们发送给Action Translate。然后,基于该参数,Translate Action填充一个列表;不知何故,javascript函数必须接收该列表,以便我可以设置这些特殊控件的一些属性。我错过了该部分{blush}哈哈。我只是稍微修改了一下我的答案。希望它有另一种帮助:例如,当我发出ajax请求时,我认为有一个属性:Success:SomeFunction(带有该列表的参数);或者。done:DOSomething()你能帮我吗-如何在javascript中获得该列表:也许在ajax请求中,我应该放Success:SomeFunction()你能帮助我吗-如何在javascript中获得这个列表:也许在ajax请求中,我应该将success:SOmeFunction()放入