[英]Jquery .ajaxForm() submit gives 404 error but URL is correct ASP.Net MVC
[英]using jQuery AjaxForm in ASP.NET problem
我正在使用jQuery AjaxForm插件来创建用户选择加载到服务器的图像的预览。 我使用Http处理程序创建用于图像预览的临时图像文件。 响应FileUpload控件的客户端“ onchange”事件,成功创建了图像预览。
我有一个按钮,可以将整个表单(UploadImageToServerStep1.aspx)发送到服务器。 在该按钮的服务器端Click事件中,我尝试将控件转移到另一个页面(UploadImageToServerStep1.aspx2),该控件获取到文件后面的另一个页面代码(该控件获取到该页面的Page_Load事件), 但该页面未显示-而是再次显示引用页面(UploadImageToServerStep1.aspx) (控件不会进入该页面的页面加载事件)。
UploadImageToServerStep1.aspx中的JS代码为:<脚本类型=“ text / javascript”>
var Preview = {ImagePreview:function(imageId){
var formId = '<%= Form.ClientID %>';
var fileUploadId = '<%= FileUpload1.UniqueID %>';
var action = $('#' + formId).attr('action');
var imageName = $("input[serverId = 'FileUpload1']").val();
$('#' + formId).attr('action', './HttpHandlers/ImagesHandler.ashx?action=imagePreview&f=' + fileUploadId + '&i=' + imageName);
$('#' + formId).ajaxForm(function() {
$('#' + imageId).attr('src', './HttpHandlers/ImagesHandler.ashx?action=imagePreview&f=' + fileUploadId + '&i=' + imageName);
$('#' + imageId).show();
$('#' + formId).attr('action', action);
});
$('#' + formId).submit();
}
}; </脚本> /
在UploadImageToServerStep1.aspx.cs中
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FileUpload1.Attributes.Add("onchange", "preview.ImagePreview('htmlImgPreview');");
FileUpload1.Attributes.Add("serverId", "FileUpload1");
}
}
protected void btnNext_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
Response.Redirect("UploadImageToServerStep2.aspx");
//Server.Transfer("UploadImageToServerStep2.aspx");
}
}
在HttpHandler中:
case "imagePreview":
string f = context.Request.QueryString.Get("f");
string i = context.Request.QueryString.Get("i");
const string uploadImageTempPath = "~/Images/TempImages/";
if (!string.IsNullOrEmpty(context.Request.QueryString.Get("i")) && context.Request.Files[f] != null)
{
HttpPostedFile file = context.Request.Files[f];
SaveImage(context, file, uploadImageTempPath, i);
}
context.Response.ContentType = GetContentType(context.Session["fileName"].ToString());
if (context.Session["fileName"] == null || context.Request["i"] == null)
{
return;
}
byte[] byteArray1 =
System.IO.File.ReadAllBytes(
context.Request.MapPath(string.Format("{0}{1}", uploadImageTempPath, context.Session["fileName"])));
context.Response.BinaryWrite(byteArray1);
break;
}
有人可以写出造成这种现象的原因是什么,如何解决这个问题?
谢谢
当尝试对ajax调用进行response.redirect时,您的浏览器的行为将与常规同步请求不同。 但是,您可以在JS端获取响应并对其进行处理。 我相信这会对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.