2011-02-02 2 views
1

Я хочу передать список в мою функцию jquery в приложении asp.net mvc и хочу повторить его в функции jquery. что мне нужно сделать.Список переходов <objects> функции jQuery

Отредактировано: Добавлен мой код здесь

Сценарий:

$.getJSON('/LoadTest/GetAllQuestionsForTest', function(data) { 
      $.each(data, function() { 

        alert("hi"); 
       }); 
      }); 

контроллер:

[AcceptVerbs(HttpVerbs.Get)] 
     public JsonResult GetAllQuestionsForTest() 
     { 
      int testId = 1; 
      int id = Convert.ToInt32(testId); 
      List<Question> questionList; 

      questionList = questionManager.GetquestionsByTestId(id); 
      return Json(questionList,JsonRequestBehavior.AllowGet); 
     } 
+0

Является ли JSOn только способом. Я не могу получить Json и его обработку. пожалуйста, направляйте –

ответ

1

Вы можете сериализовать список объекта JSON, а затем петли через него:

<script type="text/javascript"> 
    var list = <%= new JavaScriptSerializer().Serialize(Model.YourList) %>; 
    $.each(list, function(index, element) { 
     // TODO: Do something with the element. 
    }); 
</script> 

Другая возможность заключается в том, чтобы принести этот список в запросе AJAX:

<script type="text/javascript"> 
    $.getJSON('<%= Url.Action("GetMyList") %>', function(result) { 
     $.each(result, function(index, element) { 
      // TODO: Do something with the element. 
     }); 
    }); 
</script> 
+0

, каково должно быть действие для первой возможности? –

+0

не может разрешить используемые классы в этой строке: var list = <% = new JavaScriptSerializer(). Serialize (Model.YourList)%>; Значит, я не получаю модель. любое любое пространство имен, которое мне нужно импортировать? –

+0

@Lalit, вы [JavaScriptSerializer] (http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx) класс определен в 'System.Web.Script. Сериализация пространства имен 'System.Web.Extensions.dll'. –

0

Вы можете вернуть JsonResult от ваших действий MVC.

List<MyObject> myList = /* get the data */ 

return Json(myList); 

Это предполагает, что вы объект сериализуете красиво без каких-либо осложнений. Если объект является сложным, вы можете захотеть его сериализовать самостоятельно с помощью JavaScriptSerializer и вернуть результат действия Content.

Другой serialiser вы можете посмотреть бы json.net

0

JQuery является Javascript в конце концов, он не может понять, какие типы CLR и многие форматы могут быть применены на ваших данных (объекты под рукой), как сериализации их JSON, так что jQuery на стороне клиента может это понять.

для JSON, HERE - это такой полезный веб-сайт для проверки вашей нотации JSON, чтобы убедиться, что он действителен и представлен правильно.

+0

yaaa. Я получаю "синтаксическую ошибку, неожиданный TINVALID в строке 1 Анализ не удалось" что это значит. не получая точной синтаксической ошибки по вашей ссылке. –

+0

@Lalit Ну, это валидатор, а не компилятор. Но хотя вы можете считать это недостатком, но это очень известный валидатор. Мой анализ: у вас есть ошибка в настройках кавычек/двойных кавычек, можете ли вы опубликовать созданный JSON или достойный образец, чтобы мы могли вам помочь? –

0

В приложении MVC, вы можете привести к JsonResult:

public JsonResult MyAction() 
{ 
    var myList = GetMyList(); 
    return Json(myList); 
} 

Затем в JQuery, вы можете позвонить в контроллер в качестве запроса AJAX и итерацию через них:

$.getJSON('/Controller/MyAction',function(data){ 
    $.each(data, function(){ 
     console.log(this); 
    }); 
}); 

Пример: http://shashankshetty.wordpress.com/2009/03/04/using-jsonresult-with-jquery-in-aspnet-mvc/

+0

не получаю никаких данных, я могу видеть, он вызывает требуемое действие, но не может извлечь данные.please снова увидеть вопрос, я отредактировал свой код –

+0

@Lalit. Мой пример действительно должен был указывать в правильном направлении. Не могли бы вы разместить JSON, если вы просто перейдете на сайт http://yoursite.com/LoadTest/GetAllQuestionsForTest в своем браузере? –

+0

хорошо, как я могу увидеть мои данные json, чтобы я мог опубликовать вас –

0

Вы можете вернуть JsonResult из метода действий, например:

return new JsonResult{Data= lstObjects}; // lstObjects is the collection/list of objects. 

И затем для итерации вы можете воспользоваться функцией $.each(...) или норамом for{}... Но $ .each (...) даст вам лучшую производительность по сравнению с большими коллекциями.

Смежные вопросы