2012-04-17 4 views
-1

Итак, у меня проблема с моим Json Call на контроллер. Im получаю ошибку "parseerror - Неожиданный маркер <"Json request parseerror - неожиданный токен <MVC3

мой код выглядит следующим образом, на мой взгляд:

$("select[name='SelectedProjectStatus']").change(function() { 

     var DashboardModel = { 
      SelectedProjectStatus: $("select[name='SelectedProjectStatus']").val(), 
      Page: 1 
     }; 

     $.ajax({ 
      url: '@Url.Action("Dashboard", "Dashboard")', 
      type: 'POST', 
      data: JSON.stringify(DashboardModel), 
      dataType: 'json', 
      contentType: 'application/json; charset=utf-8', 
      success: function (data) { 
       $('#DashboardResult').replaceWith(data); 
      }, 
      error: function (request, status, err) { 
       alert(status); 
       alert(err); 
      } 
     }); 

    }); 

и в моем контроллере:

[HttpPost] 
    public ActionResult Dashboard(DashboardModel dashboard) 
    { 
     var MyProjects = EFProject.Project.Where(x => x.UserID == 1); 
     if (dashboard.SelectedProjectStatus != 0) 
      MyProjects = MyProjects 
         .Where(x => x.Status == dashboard.SelectedProjectStatus) 
         .OrderByDescending(p => p.AuditingCD) 
         .Skip((dashboard.Page - 1) * PageSize) 
         .Take(PageSize); 
     else 
      MyProjects = MyProjects 
         .OrderByDescending(p => p.AuditingCD) 
         .Skip((dashboard.Page - 1) * PageSize) 
         .Take(PageSize); 

     DashboardModel model = new DashboardModel 
     { 
      Projects = MyProjects, 
      PagingInfo = new PagingInfo 
       { 
        CurrentPage = dashboard.Page, 
        ItemsPerPage = PageSize, 
        TotalItems = EFProject.Project.Where(x => x.UserID == 1).Count() 
       } 
     }; 
     if (Request.IsAjaxRequest()) 
     { 
      return PartialView("DashboardResult", model); 
     } 
     else 
     { 
      return View(model); 
     } 
    } 

Частичный вид им пытаются оказывает только следующее:

@using BidThatProject.Web.Models.NonReusableModels.ProjectManagment 
@model DashboardModel 
<div id="DashboardResult"> 

</div> 

и родительский вид, очевидно, имеет div с одинаковыми идентификаторами. Он должен работать, по крайней мере, показывая во мне пустое пространство, но похоже, что у него проблема с анализом данных обратно в представление. Может быть, это не чтение его как типа application/json? Я действительно понятия не имею,.

ответ

1

использование Json Результат и возврат Json (модель);

public JsonResults MyTest(){ 
    var model = FROM b in Table WHERE b.id == 1 select b; 
    return Json(model); 
} 

$.ajax({ 
     url: '@Url.Action("Dashboard", "Dashboard")', 
     type: 'POST', 
     data: {page: 1, selected: $("select[name='SelectedProjectStatus']").val() }, 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     success: function (data) { // 
      // process the json object into html page 
     }, 
     error: function (request, status, err) { 
      alert(status); 
      alert(err); 
     } 
    }); 

здесь является редактирование, как сообщение в блоге получает частичное представление с помощью AJAX, не JSON данных через AJAX:

public ActionResults MyTest(SearchModel results){ 
    var model = FROM b in Table WHERE b.id == 1 select b; 
    return PartialView("ViewName",model); 
} 
// you create a partial view that takes in your model 
$.ajax({ 
    url: '/ajax/MySearch', 
    type: 'POST', 
    data: $("form").serialize(),   
    success: function (data) { // 
     $("#searchresults").html(data); 
    }, 
    error: function (request, status, err) { 
     alert(status); 
     alert(err); 
    } 
}); 
+0

Ну, я после этой страницы, например, HTTP: // WWW. infinitedreamers.co.uk/mvc3-ajax-search-tutorial/ и кажется, что мне нужно вернуть частичный вид, если я не хочу рисовать весь html в js. –

+0

не оскорбительно для издателя, но я имею дело только с json и ajax за 70% работы, которую я делаю, и что этот блог/учебник отправляет вам вниз по crazzzzzyyyy дороге. вы можете использовать шаблоны jquery, если вы беспокоитесь о обработке данных, просто создайте html-страницу с маркерами $ name $ и т. д. и используйте шаблон для json-данных, то есть блог переписан на часы меньше работы – davethecoder

+0

Хм, ну, хотя это не лучший способ создать страницу поиска с ajax, ее все еще странно, что я получаю эту ошибку, потому что она отлично работает для меня в другом представлении. Тем не менее, на данный момент, я думаю, я мог бы попробовать что-нибудь еще, что помогло мне не рисовать весь контент в js, поскольку реальный контент, который я не опубликовал (я разместил частичный вид пустым), немного сложнее (многие C# foreach's). –

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