jQuery ajax加载问题与MVC控制器的参数

时间:2015-06-22 08:50:25

标签: jquery ajax asp.net-mvc asp.net-web-api

简介

我正在使用带有WebApi 2.0和jQuery的ASP.NET MVC 5.

问题

我正在尝试显示一个模式,其中包含来自ajax调用的用户详细信息。 使用$.getJSON()我成功收到了来自WebApi的Json格式的用户详细信息。 现在我想使用局部视图在我的模态中加载html。

我尝试使用以下代码,但html没有加载。 在我的控制台中,我看到了带有正确数据和html的请求和响应。

loadItem: function () {
        var $a = $(this);
        var id = $a.attr('data-id');

        $.getJSON(uri_api + '/' + id)
            .done(function (data) {
                console.log(JSON.stringify(data));

                $.ajaxSetup({
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    cache: false
                });

                // Get the partial view to show in modal
                $.ajax({
                    type: 'POST',
                    data: JSON.stringify(data),
                    url: uri_internal + '/getuserdetails',
                    done: function (result) {
                        var $modal = $('#modalUserDetails');
                        $modal.html(result);
                        $modal.modal('show');
                    },
                    fail: function (jqXHR, textStatus, err) {
                        console.log('Error: ' + err);
                    }
                });
            })
            .fail(function (jqXHR, textStatus, err) {
                console.log('Error: ' + err);
            });
    }

然后我使用另一个ajax函数.load()直接加载html但现在我没有收到任何东西。在我的控制器中放置断点也不会触发,我收到500内部服务器错误。

我用于加载的代码:

$.getJSON(uri_api + '/' + id)
                .done(function (data) {
                    console.log(JSON.stringify(data));

                    $.ajaxSetup({
                        contentType: 'application/json; charset=utf-8',
                        dataType: 'json',
                        cache: false
                    });

                    // Get the partial view to show in modal
                    var $modal = $('#modalUserDetails');
                    $modal.load(
                        uri_internal + '/getuserdetails', { user: JSON.stringify(data) }, function () { }
                    );
                    $modal.modal('show');

                })
                .fail(function (jqXHR, textStatus, err) {
                    console.log('Error: ' + err);
                });

我的控制器就像:

public ActionResult GetUserDetails(User user)
{
     return PartialView(user);
}

用于加载数据的模式html:

<div class="modal fade" id="modalUserDetails" tabindex="-1" role="dialog" aria-labelledby="modalUserDetailsLabel" aria-hidden="true">
    </div>

部分观点:

@model ProsecMdmHelper.Models.User

<div class="modal-dialog modal-sm">
    <div class="modal-content">
        <div class="modal-header">

            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
            <h4 class="modal-title" id="modalUserDetailsLabel"><i class="icon-check"></i>Gebruiker details</h4>

        </div>
        <div class="modal-body">

            <p>User is called @Model.Name</p>

        </div>
        <div class="modal-footer">

        </div>
    </div>
</div>

500错误:

"Invalid JSON primitive" in Ajax processing: user

0 个答案:

没有答案