Javascript 上传完成后如何获得json结果?
我不熟悉razor view引擎。我遇到了一个情况,我想上传一个图像与图像浏览器的变化事件。 Jquery函数如下所示:Javascript 上传完成后如何获得json结果?,javascript,jquery,json,asp.net-mvc,razor,Javascript,Jquery,Json,Asp.net Mvc,Razor,我不熟悉razor view引擎。我遇到了一个情况,我想上传一个图像与图像浏览器的变化事件。 Jquery函数如下所示: $("#billUpload").change(function (){ $('#uploadImageForm').submit(); } @using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data", id = "uploadImageFo
$("#billUpload").change(function (){
$('#uploadImageForm').submit();
}
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data", id = "uploadImageForm" }))
{
<span class="file-input btn btn-sm btn-default btn-file">
Browse…
<input id="billUpload" name="File" type="file">
</span>
}
Razor视图代码如下所示:
$("#billUpload").change(function (){
$('#uploadImageForm').submit();
}
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data", id = "uploadImageForm" }))
{
<span class="file-input btn btn-sm btn-default btn-file">
Browse…
<input id="billUpload" name="File" type="file">
</span>
}
现在,整个代码在上传图像时没有问题,但我不理解如何在警报框中显示控制器返回的json消息。提前感谢。您可以使用
ajax
像下面这样做。希望这有帮助
$("#billUpload").on('change', (function(e) {
e.preventDefault;
var formData = new FormData($('#uploadImageForm')[0]);
$.ajax({
url : "/Home/Upload",
type : "POST",
data : formData,
cache : false,
contentType : false,
processType : false,
success : function(data) {
alert(data);
}
});
}));
为此,您应该使用
ajax
提交表单。在这种情况下,控制器获取HttpPostedFileBase null。我试过了。你指的是什么警报框?你在做一个正常的提交,所以它只是要重定向到一个新页面(并显示“完成”,因为你返回了一个JsonResult
)@StephenMuecke我希望结果在同一页面上生成。然后使用ajax和FormData
(请参阅)。但是,添加永远不会使用的ViewBag
属性和ModelState
错误有什么意义呢?这是一个很好的解决方案。但在IE8中不起作用。我建议使用来自的ajaxForm插件。您能告诉我应该放置html.beginform吗。因为我在上面提到,给定的程序不调用控制器。:-(如果您的控制器位于任何区域,请在url
中添加区域名称。