我有一个方法设置,使用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)) } };
}
答案 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。