如何使用jquery ajax从mvc控制器获取列表来查看

时间:2021-10-17 12:14:11

I need to get a list from mvc controller to view using jquery ajax. how can i do that. this is my code. Its alerting error message.

我需要从mvc控制器获得一个列表来使用jquery ajax查看。我怎么做呢。这是我的代码。其报警错误消息。

In Controller

 public class FoodController : Controller
    {
       [System.Web.Mvc.HttpPost]
        public IList<Food> getFoodDetails(int userId)
        {
            IList<Food> FoodList = new List<Food>();

                FoodList = FoodService.getFoodDetails(userId);

                return (FoodList);
        }
    }

In view

function GetFoodDetails() {
        debugger;
        $.ajax({
            type: "POST",
            url: "Food/getFoodDetails",
            data: '{userId:"' + Id + '"}',
            contentType: "application/json;charset=utf-8",
            dataType: "json",
            success: function (result) {
                debugger;
                alert(result)
            },
            error: function (response) {
                debugger;
                alert('eror');
            }
        });

    }

如何使用jquery ajax从mvc控制器获取列表来查看

5 个解决方案

#1


14  

Why you use HttpPost for GET-method? And need return JsonResult.

为什么要使用HttpPost获取方法?,需要返回JsonResult。

public class FoodController : Controller
{
   [System.Web.Mvc.HttpGet]
    public JsonResult getFoodDetails(int userId)
    {
        IList<Food> FoodList = new List<Food>();

        FoodList = FoodService.getFoodDetails(userId);

        return Json (new{ FoodList = FoodList }, JsonRequestBehavior.AllowGet);
    }
}


function GetFoodDetails() {
    debugger;
    $.ajax({
        type: "GET",
        url: "Food/getFoodDetails",
        data: { userId: Id },
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        success: function (result) {
            debugger;
            alert(result)
        },
        error: function (response) {
            debugger;
            alert('eror');
        }
    });

}

#2


4  

you can do like this , return json data and print it

您可以这样做,返回json数据并打印它。

Read full tutorial : http://www.c-sharpcorner.com/UploadFile/3d39b4/rendering-a-partial-view-and-json-data-using-ajax-in-Asp-Net/

阅读完整教程:http://www.c-sharpcorner .com/uploadfile/3d39b4/rendering-a -part -view-and-json- use - ajaxin - asp-net/

public JsonResult BooksByPublisherId(int id)
{
      IEnumerable<BookModel> modelList = new List<BookModel>();
      using (DAL.DevelopmentEntities context = new DAL.DevelopmentEntities())
      {
            var books = context.BOOKs.Where(x => x.PublisherId == id).ToList();
            modelList = books.Select(x =>
                        new BookModel()
                        {
                                   Title = x.Title,
                                   Author = x.Auther,
                                   Year = x.Year,
                                    Price = x.Price
                          });
            }
    return Json(modelList,JsonRequestBehavior.AllowGet);

        }

javascript

javascript

$.ajax({

                cache: false,

                type: "GET",

                url: "@(Url.RouteUrl("BooksByPublisherId"))",

                data: { "id": id },

                success: function (data) {

                    var result = "";

                    booksDiv.html('');

                    $.each(data, function (id, book) {

                        result += '<b>Title : </b>' + book.Title + '<br/>' +

                                    '<b> Author :</b>' + book.Author + '<br/>' +

                                     '<b> Year :</b>' + book.Year + '<br/>' +

                                      '<b> Price :</b>' + book.Price + '<hr/>';

                    });

                    booksDiv.html(result);

                },

                error: function (xhr, ajaxOptions, thrownError) {

                    alert('Failed to retrieve books.');

                }

            });

#3


1  

The reason why i am not getting the result was.. I forgot to add json2.js in the library

我没有得到结果的原因是……我忘记添加json2了。js在图书馆

 public class FoodController : Controller
    {
       [System.Web.Mvc.HttpGet]
        public JsonResult getFoodDetails(int userId)
        {
            IList<Food> FoodList = new List<Food>();

            FoodList = FoodService.getFoodDetails(userId);

            return Json (FoodList, JsonRequestBehavior.AllowGet);
        }
    }

function GetFoodDetails() {
    debugger;
    $.ajax({
        type: "GET",
        url: "Food/getFoodDetails",
        data: { userId: Id },
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        success: function (result) {
            debugger;
            alert(result)
        },
        error: function (response) {
            debugger;
            alert('eror');
        }
    });

}

#4


0  

Try This :

试试这个:

View :

观点:

    [System.Web.Mvc.HttpGet]
    public JsonResult getFoodDetails(int? userId)
    {
        IList<Food> FoodList = new List<Food>();

        FoodList = FoodService.getFoodDetails(userId);

        return Json (new { Flist = FoodList } , JsonRequestBehavior.AllowGet);
    }

Controller :

控制器:

function GetFoodDetails() {
    debugger;
    $.ajax({
        type: "GET",       // make it get request instead //
        url: "Food/getFoodDetails",
        data: { userId: Id },      
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        success: function (result) {
            debugger;
            alert(result)
        },
        error: function (response) {
            debugger;
            alert('error');
        }
    });

}

Or if ajax request is creating problems then you can use $.getJSON as :

或者如果ajax请求产生问题,那么您可以使用$。getJSON:

$.getJSON("Food/getFoodDetails", { userId: Id } , function( data ) {....});

#5


0  

$(document).ready(function(){

$(文档)时函数(){

var data = new Array();
$.ajax({
        url: "list",
        type: "Get",
        data : JSON.stringify(data),
        dataType : 'json',
success: function (data) { 

    $.each(data, function(index) {

         // alert("id= "+data[index].id+" name="+data[index].name);

        $('#myTable tbody').append("<tr class='child'><td>"+data[index].id+"</td><td>"+data[index].name+"</td></tr>");

    });

},
error: function (msg) { alert(msg); }

});

});

});

});

@Controller public class StudentController {

@Controller public class StudentController

@Autowired
StudentService studentService;


@RequestMapping(value="/list" , method=RequestMethod.GET)
 @ResponseBody
public  List<Student> dispalyPage() {

    return studentService.getAllStudentList();
}

#1


14  

Why you use HttpPost for GET-method? And need return JsonResult.

为什么要使用HttpPost获取方法?,需要返回JsonResult。

public class FoodController : Controller
{
   [System.Web.Mvc.HttpGet]
    public JsonResult getFoodDetails(int userId)
    {
        IList<Food> FoodList = new List<Food>();

        FoodList = FoodService.getFoodDetails(userId);

        return Json (new{ FoodList = FoodList }, JsonRequestBehavior.AllowGet);
    }
}


function GetFoodDetails() {
    debugger;
    $.ajax({
        type: "GET",
        url: "Food/getFoodDetails",
        data: { userId: Id },
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        success: function (result) {
            debugger;
            alert(result)
        },
        error: function (response) {
            debugger;
            alert('eror');
        }
    });

}

#2


4  

you can do like this , return json data and print it

您可以这样做,返回json数据并打印它。

Read full tutorial : http://www.c-sharpcorner.com/UploadFile/3d39b4/rendering-a-partial-view-and-json-data-using-ajax-in-Asp-Net/

阅读完整教程:http://www.c-sharpcorner .com/uploadfile/3d39b4/rendering-a -part -view-and-json- use - ajaxin - asp-net/

public JsonResult BooksByPublisherId(int id)
{
      IEnumerable<BookModel> modelList = new List<BookModel>();
      using (DAL.DevelopmentEntities context = new DAL.DevelopmentEntities())
      {
            var books = context.BOOKs.Where(x => x.PublisherId == id).ToList();
            modelList = books.Select(x =>
                        new BookModel()
                        {
                                   Title = x.Title,
                                   Author = x.Auther,
                                   Year = x.Year,
                                    Price = x.Price
                          });
            }
    return Json(modelList,JsonRequestBehavior.AllowGet);

        }

javascript

javascript

$.ajax({

                cache: false,

                type: "GET",

                url: "@(Url.RouteUrl("BooksByPublisherId"))",

                data: { "id": id },

                success: function (data) {

                    var result = "";

                    booksDiv.html('');

                    $.each(data, function (id, book) {

                        result += '<b>Title : </b>' + book.Title + '<br/>' +

                                    '<b> Author :</b>' + book.Author + '<br/>' +

                                     '<b> Year :</b>' + book.Year + '<br/>' +

                                      '<b> Price :</b>' + book.Price + '<hr/>';

                    });

                    booksDiv.html(result);

                },

                error: function (xhr, ajaxOptions, thrownError) {

                    alert('Failed to retrieve books.');

                }

            });

#3


1  

The reason why i am not getting the result was.. I forgot to add json2.js in the library

我没有得到结果的原因是……我忘记添加json2了。js在图书馆

 public class FoodController : Controller
    {
       [System.Web.Mvc.HttpGet]
        public JsonResult getFoodDetails(int userId)
        {
            IList<Food> FoodList = new List<Food>();

            FoodList = FoodService.getFoodDetails(userId);

            return Json (FoodList, JsonRequestBehavior.AllowGet);
        }
    }

function GetFoodDetails() {
    debugger;
    $.ajax({
        type: "GET",
        url: "Food/getFoodDetails",
        data: { userId: Id },
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        success: function (result) {
            debugger;
            alert(result)
        },
        error: function (response) {
            debugger;
            alert('eror');
        }
    });

}

#4


0  

Try This :

试试这个:

View :

观点:

    [System.Web.Mvc.HttpGet]
    public JsonResult getFoodDetails(int? userId)
    {
        IList<Food> FoodList = new List<Food>();

        FoodList = FoodService.getFoodDetails(userId);

        return Json (new { Flist = FoodList } , JsonRequestBehavior.AllowGet);
    }

Controller :

控制器:

function GetFoodDetails() {
    debugger;
    $.ajax({
        type: "GET",       // make it get request instead //
        url: "Food/getFoodDetails",
        data: { userId: Id },      
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        success: function (result) {
            debugger;
            alert(result)
        },
        error: function (response) {
            debugger;
            alert('error');
        }
    });

}

Or if ajax request is creating problems then you can use $.getJSON as :

或者如果ajax请求产生问题,那么您可以使用$。getJSON:

$.getJSON("Food/getFoodDetails", { userId: Id } , function( data ) {....});

#5


0  

$(document).ready(function(){

$(文档)时函数(){

var data = new Array();
$.ajax({
        url: "list",
        type: "Get",
        data : JSON.stringify(data),
        dataType : 'json',
success: function (data) { 

    $.each(data, function(index) {

         // alert("id= "+data[index].id+" name="+data[index].name);

        $('#myTable tbody').append("<tr class='child'><td>"+data[index].id+"</td><td>"+data[index].name+"</td></tr>");

    });

},
error: function (msg) { alert(msg); }

});

});

});

});

@Controller public class StudentController {

@Controller public class StudentController

@Autowired
StudentService studentService;


@RequestMapping(value="/list" , method=RequestMethod.GET)
 @ResponseBody
public  List<Student> dispalyPage() {

    return studentService.getAllStudentList();
}