-1

だから私はコントローラーへの私のJson呼び出しに問題があります。エラー「parseerror-予期しないトークン<」が表示されます

私の見解では、私のコードは次のとおりです。

$("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>

親ビューには明らかに同じIDのdivがあります。少なくとも私に空のスペースを表示することで機能するはずですが、データをビューに解析して戻すのに問題があるようです。アプリケーション/jsonタイプとして読み取っていない可能性がありますか?本当にわかりません。

4

1 に答える 1

1

Json Result を使用し、Json(model) を返します。

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);
    }
});
于 2012-04-17T21:21:06.690 に答える