相关疑难解决方法(0)

如何使用iframe进行异步(AJAX)文件上传?

我正在尝试上传ajax文件.我读到如果不使用它就不可能做到这一点iframe.
我写 :

<iframe id="uploadTrg" name="uploadTrg" height="0" width="0" frameborder="0" scrolling="yes"></iframe>
<form id="myForm" action="file-component" method="post" enctype="multipart/form-data"  target="uploadTrg">
File: <input type="file" name="file">
<input type="submit" value="Submit" id="submitBtn"/>
</form>
Run Code Online (Sandbox Code Playgroud)

并使用jquery表单插件:

$('#myForm').ajaxForm({
    dataType:  'json',
    success:   function(data){
        alert(data.toSource());
    }
});
Run Code Online (Sandbox Code Playgroud)

结果 :

文件上传成功,我可以看到上传的文件,但会出现一个对话框:

替代文字

因为我发回一个json结果来显示文件名+大小等.

我的问题: 如何使用iFrame进行"ajax文件上传".

注意:

  1. 如果有更合适/更简单的解决方案,我不喜欢使用特殊插件上传文件.
  2. 我使用jsp/servlets作为服务器端语言..但我认为使用哪种语言没有意义.

谢谢

ajax jquery servlets file-upload

50
推荐指数
1
解决办法
5万
查看次数

无法异步使用Ajax.BeginForm()上传文件

我正在尝试使用Ajax.BeginForm()上传文件,但它没有用完.

我的观点包含:

@using (Ajax.BeginForm("UploadFile", null, new AjaxOptions { HttpMethod="POST",     UpdateTargetId = "result" }, new { enctype = "multipart/form-data" }))
{
   <label id="lblUploadNewFile" for="fileUploadControl">Upload New File&lt;/label>
   <input type="file" name="fileToUpload" id="fileUploadControl"/>
   <input id="btnFileUpload" type="submit" value="Upload" />
   <span id="result" />
}
Run Code Online (Sandbox Code Playgroud)

和相应的控制器是:

[HttpPost]
public string UploadFile(FormCollection formData)
{
   HttpPostedFileBase file=null;

   try
   {
      file = Request.Files[0];
   }
   catch { }

   if ( file!=null &amp;&amp; file.ContentLength &gt; 0)
   {
      file.SaveAs(string.Concat(
            AppDomain.CurrentDomain.BaseDirectory,
            Path.GetFileName(file.FileName)));

      return &quot;Successfully Uploaded&quot;;
   }
   else
   {
      return &quot;Upload Failed, please try again.&quot;;
   } …
Run Code Online (Sandbox Code Playgroud)

javascript c# asp.net-mvc-4

11
推荐指数
2
解决办法
3万
查看次数

Ajax.BeginForm不能异步工作

我在Index视图中使用Ajax.BeginFrom来测试Home控制器中的方法

@using (Ajax.BeginForm(actionName: "TestMethod",
        controllerName: "Home",
        ajaxOptions: new AjaxOptions
        {
            HttpMethod = "POST",
            InsertionMode = InsertionMode.Replace,
            UpdateTargetId = "TestInfo",
            LoadingElementId = "Progress"
        }))
{
    <input type="submit" value="Search" />
    <div id="TestInfo"></div>
}
Run Code Online (Sandbox Code Playgroud)

[HttpPost]
public virtual ActionResult TestMethod()
{
    return Content("ok");
}
Run Code Online (Sandbox Code Playgroud)

但提交后,页面重定向到/ Home/TestMethod并显示'ok'.

我已经添加

<add key="UnobtrusiveJavaScriptEnabled" value="true" />
Run Code Online (Sandbox Code Playgroud)

在webconfig和

<script src="@Links.Scripts.jquery_unobtrusive_ajax_min_js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

在我的布局中.但它仍然不能异步工作.问题出在哪儿?

asp.net-mvc jquery asp.net-ajax

3
推荐指数
1
解决办法
5594
查看次数