没有返回View的Ajax结果

时间:2009-11-10 03:45:17

标签: jquery asp.net-mvc ajax

我有一个方法设置,使用jquery表单进行文件上传 - 上传后我想更新一个图层。这是我的代码......

问题是该方法是一个JsonResult,我无法弄清楚如何在运行后调用页面另一部分的更新。有什么建议吗?

    <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<script type="text/javascript">
        $(function() {

            $("#ajaxUploadForm").ajaxForm({
                iframe: true,
                dataType: "json",
                beforeSubmit: function() {
                    $("#ajaxUploadForm").block({ message: '<img src="<%= ResolveUrl("~/content/images/busy.gif") %>" /> Uploading file...' });
                },
                success: function(result) {
                    $("#ajaxUploadForm").unblock();
                    $("#ajaxUploadForm").resetForm();
                    //$.growlUI(null, result.message);
                },
                error: function(xhr, textStatus, errorThrown) {
                    $("#ajaxUploadForm").unblock();
                    $("#ajaxUploadForm").resetForm();
                    $.growlUI(null, 'Error uploading file');
                }
            });
        });
</script>
<form id="ajaxUploadForm" action="<%= Url.Action("Upload", "Pictures")%>" method="post" enctype="multipart/form-data">
<div>
    <input type="file" name="file" />
</div>
<input id="ajaxUploadButton" type="submit" value="Submit" />
</form>




    public FileUploadJsonResult Upload(HttpPostedFileBase file)
    {
        var fileName = System.IO.Path.Combine(Request.MapPath("~/Uploads"),
            System.IO.Path.GetFileName(file.FileName));
        file.SaveAs(fileName);

        Test();
        // Return JSON
        return new FileUploadJsonResult { Data = new { message = string.Format("{0} uploaded successfully.", System.IO.Path.GetFileName(file.FileName)) } };
    }

1 个答案:

答案 0 :(得分:1)

JSON数据基本上与javascript中的哈希或字典相同。

{
    'name':'value',
    'name2':'value2'
}

你可以简单地在你的success(result)函数中获取json结果并深入研究它,就像你通常使用Javascript中的字典一样。例如:

...
success: function(result) {
    $("#divToUpdate").html(result['name2']);

    $("#ajaxUploadForm").unblock();
    $("#ajaxUploadForm").resetForm();
},
...

上面的代码段会将“value2”添加到带有id="divToUpdate"的div。

您将无法使用任何服务器端视图或部分视图来呈现html。相反,您必须使用JQuery生成任何其他HTML,因为在客户端上处理JSON。它本身就是其中之一。

一种解决方法是在局部视图中返回一些javascript。