Javascript 向mvc控制器发出.ajax请求-但.done函数从未执行

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 () {

基本上我是这样做的:

在body-onload方法中,我调用这个javascript函数

        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-put
jsonRequestBehavior.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()放入