用jquery ajaxfileupload上传照片遇到的问题...

lzo_ozl 2012-05-14 07:46:34
看了网上这个插件,觉得还行就用用了.

结果无论如何都得不到图片的路径...
附加到进程调试,后台能正常返回数据。
但是js代码里面 既进不了 success 又进步了error ,给hidden赋的路径始终是undefined...

贴代码:
js:

$(function(){
$('#ShowUpPhoto').change(function(){
upload();
});
});

function upload(){
$.ajaxFileUpload(
{
url : '/Member/ajaxUpload.aspx?random=' + Math.random(),
secureuri : false,
fileElementId : 'ShowUpPhoto',
dataType : 'json',
success: function (data, status)
{
if(data.status == 'success')
{
$('#MemberPicUrl').val(data.msg.Origin);
alert(data.msg.Origin);
}
else
{
alert(data.msg);
}
},
error: function (data, status, e)
{
alert(data.msg);
alert(status);
alert(e);
}
});

$('#ShowUpPhoto').change(function(){
upload();

});
}
function updateUser(showID){

upload();

var name=$("#ShowUpName").val();
var title=$("#ShowUpTitle").val();
var email=$("#ShowUpEmail").val();
var com=$("#ShowUpCom").val();
var url=$("#MemberPicUrl").val();//这个url无论如何都是undefined的啊啊啊啊啊啊啊啊!!!
$.ajax({
url: 'Ajax/Handler.ashx',
data: "action=UpdateUser&id="+showID+"&name="+name+"&title="+title+"&email="+email+"&com="+com+"&url="+url,
type: 'post',
success: function(response){

location.reload();
}
});
}



C#代码

HttpFileCollection files = Request.Files;
if (files != null && files.Count > 0)
{
HttpPostedFile file = files[0];
string uploadpath = "";
string msg = "";
Random rd = new Random();

uploadpath = string.Format("/UserPhoto/{0}-{1}/", DateTime.Now.ToString("d").Replace("/", "-"), rd.Next().ToString());
uploadpath = uploadpath.Replace("//", "/");
string fileuploadpath = Server.MapPath(uploadpath + "\\");
if (!Directory.Exists(fileuploadpath))
{
Directory.CreateDirectory(fileuploadpath);
}
if (file.FileName.Length > 0)
{
string ext = Path.GetExtension(file.FileName).ToLower();
if (ext != ".jpg" && ext != ".jepg" && ext != ".bmp" && ext != ".gif" && ext != ".png")
throw new Exception("只能上传jpg,bmp,gif,png格式的图片");
int fileSize = file.ContentLength;
if (fileSize > 2097152)
throw new Exception("上传图片最大为2M,上传失败");
string fileName = file.FileName;
fileName = string.Format("{0}-{1}-{2}", DateTime.Now.ToString("d").Replace("/", "-"), rd.Next().ToString(), fileName);
try
{
file.SaveAs(fileuploadpath + fileName);
msg = uploadpath + fileName;
Response.Write("{status:'success',msg:{Origin:'" + msg + "'}}");
//这里的msg的值大致如:/UserPhoto/2012-5-14-800087287/2012-5-14-1876285310-未命名.jpg
}
catch (Exception ex)
{
Response.Write(@"{
status : 'error',
msg : '" + ex.Message + @"'
}");
Response.End();
}
}
}
}
}


网上查了很多解决方法,都没能解决。
说是插件本身有问题,我也检查了,木有问题啊啊啊啊啊啊啊!!!


uploadHttpData: function( r, type ) {
var data = !type;
data = type == "xml" || data ? r.responseXML : r.responseText;
// If the type is "script", eval it in global context
if ( type == "script" )
jQuery.globalEval( data );
// Get the JavaScript object, if JSON is used.
if ( type == "json" )
eval( "data = " + data );
// evaluate scripts within html
if ( type == "html" )
jQuery("<div>").html(data).evalScripts();

return data;
}



...全文
1769 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
木哥先生 2013-11-13
  • 打赏
  • 举报
回复
我的是拒绝访问 怎么解决呢???
lzo_ozl 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]

C# code

Response.Clear();
Response.Write("{status:'200',success:true,msg:'"+msg +"'}");
Response.End();
[/Quote]

解决了!!!!
我用的方法是改的js,我发现你的这种方法更好!!!
谢谢了!!!!
anzhiqiang_touzi 2012-05-15
  • 打赏
  • 举报
回复

Response.Clear();
Response.Write("{status:'200',success:true,msg:'"+msg +"'}");
Response.End();
anzhiqiang_touzi 2012-05-15
  • 打赏
  • 举报
回复

Response.Clear();
Response.Write("{status:'200',success:true,msg:'"+msg +"'}");
Response.End();
lzo_ozl 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

关键是:success的状态
[/Quote]

调试了一下,发现除了返回的需要的数据,还返回了title 和表单!!

"{ status : 'success', msg: { Origin : '/UserPhoto/2012-5-15-1194746589/2012-5-15-1748066117-未命名.jpg' } } <title> 无标题页 </title> <form name="form1" method="post" action="ajaxUpload.aspx?random=0.8641468100232661" id="form1"> <div> <input name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGSHQiL1Bsjk3H4wArlbaun0Htw9Fw==" type="hidden"> </div> <div> </div> </form> "
anzhiqiang_touzi 2012-05-15
  • 打赏
  • 举报
回复
关键是:success的状态
anzhiqiang_touzi 2012-05-15
  • 打赏
  • 举报
回复
我记得好像是


Response.Write("{status:'200',success:true,msg:'"+msg +"'}");

lzo_ozl 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

LZ把json写规范试试
C# code

Response.Write("{\"status\":\"success\",\"msg\":{\"Origin\":\"" + msg + "\"}}");
[/Quote]

还是不行....
yyl8781697 2012-05-15
  • 打赏
  • 举报
回复
LZ把json写规范试试

Response.Write("{\"status\":\"success\",\"msg\":{\"Origin\":\"" + msg + "\"}}");
lzo_ozl 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

LZ按你的描述图片应该是能上传的,就是得不到上传后返回的图片路径是吧?
LZ再ajaxFileUpload这个方法里面返回的是json,但是ashx返回过来的可能是认为text了(虽然是你已经构造了json格式),所以LZ可以不妨试试将返回的data来alert一下,看有没有东西返回,或者用data=eval('('+data+')')来转换一下格式,当然用火狐的firebug来调试一下 有……
[/Quote]
现在调试能进入error了
error: function (data, status, e)
{
alert(data.msg);
alert(status);
alert(e);
}

三个参数分别是 undefined,error,SyntaxError:Invalid regular expression: missing /

是我json的格式不对,该怎么改呢?
yyl8781697 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

是不能传json的数据的么?

[/Quote]
javascript没有认为你返回的数据的格式是json的吧,自己转下试试
yyl8781697 2012-05-15
  • 打赏
  • 举报
回复
LZ按你的描述图片应该是能上传的,就是得不到上传后返回的图片路径是吧?
LZ再ajaxFileUpload这个方法里面返回的是json,但是ashx返回过来的可能是认为text了(虽然是你已经构造了json格式),所以LZ可以不妨试试将返回的data来alert一下,看有没有东西返回,或者用data=eval('('+data+')')来转换一下格式,当然用火狐的firebug来调试一下 有没有东西返回也是可以的
lzo_ozl 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

你用的是什么浏览器?换个浏览器试一试。
[/Quote]

chrome,用firefox也不行,

现在我发现错误问题了:
firefox下提示:SyntaxError: unterminated regular expression literal

chrome下提示:SyntaxError:Invalid regular expression: missing /

是不能传json的数据的么?
风一样的大叔 2012-05-15
  • 打赏
  • 举报
回复
alert下 success: function (data, status)里面的data和status试试,看有没有数据
叶子 2012-05-15
  • 打赏
  • 举报
回复
你用的是什么浏览器?换个浏览器试一试。
lzo_ozl 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

$('#ShowUpPhoto').change(function(){
upload();

});
有2个这样的地方,去掉一个试试。
[/Quote]

删除了,还是不行。
licai1210 2012-05-14
  • 打赏
  • 举报
回复
$('#ShowUpPhoto').change(function(){
upload();

});
有2个这样的地方,去掉一个试试。

62,241

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧