如何使用JavaScript从数据库/模型中获取数据

如何使用JavaScript从数据库/模型中获取数据,javascript,jquery,angularjs,asp.net-mvc,razor,Javascript,Jquery,Angularjs,Asp.net Mvc,Razor,我是ASP.NET、MVC和AngularJS的新手,所以我仍在努力解决这些问题 我有一个名为Words.cs的模型,其中包含: namespace liveSearch.Models { public class Words { public int ID { get; set; } public string Word{ get; set; } } } 数据库中已经填充了数据,我想使用JavaScript/JQuery从数据库中获取每

我是ASP.NET、MVC和AngularJS的新手,所以我仍在努力解决这些问题

我有一个名为Words.cs的模型,其中包含:

namespace liveSearch.Models
{
    public class Words
    {
        public int ID { get; set; }
        public string Word{ get; set; }
    }
}
数据库中已经填充了数据,我想使用JavaScript/JQuery从数据库中获取每个单词,这样我就可以用JavaScript等操作这些数据

我目前在我的index.cshtml中有Razor,它可以:

@{
     foreach (var item in Model)
     {
         <li>
             @Html.DisplayFor(modelItem => item.Word)
         </li>
     }
 }
@{
foreach(模型中的var项目)
{
  • @DisplayFor(modelItem=>item.Word)
  • } }
    这在获取和显示模型中的所有单词时起作用,但我想摆脱Razor,改用JavaScript/Jquery获取数据

    理想情况下,我希望从DB中获取所有单词(我不关心ID),并将其添加到.js文件作用域中的数组中

    问题是我不知道如何使用JavaScript或AJAX访问数据库

    我想我可以使用
    $.get()
    $.ajax()
    ,但我真的不知道如何在DB/模型中使用它


    我还读了其他一些关于Stackoverflow的帖子,上面说这是可以做到的,但出于某种原因,我无法将这些例子应用到我的案例中。

    你可以在页面加载时调用此方法,或者在想要得到结果的地方单击按钮

       $.ajax({
        url: "yourControllerMethod",
    
    
        dataType: "json",
        success: function(data){
        alert(data)
          // here you will get the json data.
          // now uisng jQuery you can run a loop and show the data where you want to do 
          }
     });
    

    首先,您需要在控制器中创建一个操作方法,该方法返回
    Json
    。大概是这样的:

    public JsonResult SomeAction()
    {
       var list = context.Words.ToArray();
       return Json(list);
    }
    
    在您看来,您只需使用ajax获取数据:

    $.ajax({
    type: 'GET',
    url: '@Url.Action("SomeAction", "ControllerName")',
    dataType: 'json',
    success: function (data) {
      //the data parameter will be an array of objects. The objects will be of type Words
      //so data[0].Word(javascript) would be equal to list[0].Word in your SomeAction method(C#)
    }
    });
    

    因此,您需要调用WbApi/控制器方法from@ajax然后使用返回数据并在UI中显示为什么要这样做。您只需使用
    var words=@Html.Raw(Json.Encode(model)),将视图中的模型分配给javascript数组即可
    (然后
    words[0]。Word
    将返回集合中第一个
    Word
    属性的值。
    contentType:'application/json;charset=utf-8',
    是无意义的(它是一个GET,而GET没有主体)。你说得对,我将立即编辑它。谢谢你的更正。我发现了这个错误:在
    @Url.Action()
    上的“加载资源失败:服务器响应状态为404(未找到)”,我只希望您没有写“ControllerName”而不是控制器的名称。
    @Url.Action
    是一个帮助器方法,在本例中获取两个参数:第一个是控制器的名称,第二个是操作的名称。因此,如果控制器的名称(操作“SomeAction”在中定义)是HomeController,则
    @Url.action
    将如下所示:
    @Url.action(“Home”,“SomeAction”)
    相反,您可以只编写指向您的操作的链接:
    url:'/Home/SomeAction'
    ,但在asp.net mvc中,这是一种更方便的方式(因为路由)。
    contentType:'application/json;charset=utf-8',
    是毫无意义的(它是一个GET,一个GET没有主体)