form表单能否写回调函数?或者JQuery是否能用ajax来实现form提交
上传图片经过csdn朋友的帮助已经解决了.不过问题总是一个接着一个的出现.
现在我需要获得已上传的文件保存位置.但是因为图片上传是用form表单提交的,所以没法走ajax的回调函数,自然没法获得路径了.而且如果同步执行 form表单提交以及页面保存的话,ajax的请求要优先与form表单的级别。也就是说先 document.form1.submit();
$.ajax({});
插了断点我才发现是是先执行了ajax的请求然后回过头在执行的form的submit.
所以想请教各位不用ui插件的前提下,form是否有回调函数?如果没有,那么ajax能否提交form表单,这样我就可以用ajax的回调来获得保存路径做下一步处理了....问为什么非要用ajax提交form?而不直接用ajax代替form。因为如果用ajax的话,我的action没法获得到IO流的file对象,用form就可以自动获得只要遵循一定的明明规则就可以了,struts2里有的.
如果有办法的话最好具体点,谢谢了....其他办法也可以的
[解决办法]
function addData() {
var formData=$("#flowControlForm").serialize();
$.ajax({
type: "POST",
url: "flowControl.do?method=addFlowPublish,
processData:true,
data:formData,
success: function(data){
if(data=="1"){
alert("用户提交失败!");
}
}
});
}
}
ajax请求可以直接提交表单 var formData=$("#flowControlForm").serialize(); flowControlForm是表单的id值
[解决办法]
<script>
function refresh(addr){
/*addr就是你上传的文件的具体路径的值。
你在这里刷新展示地址的控件,把这个值放到控件上。
*/
}
/* 当然,你也可以写一些失败之后的处理方法。甚至去轮询后台,通过session中的信息来更新前台的进度条*/
</script>
<form action="这个就不说了吧" target="submitFrame">
<!--这里是你的元素,文件,属性都在这里-->
</form>
<iframe name="submitFrame" style="display:none"></iframe>
public void execute(){
/*
* 文件的保存之类的操作你肯定已经做完了
* 接下来从你获取到文件路径开始
*/
String path = "路径";
OutputStream out = null;
try{
out = response.getOutputStream();
//这里我忘记是要字符串还是字节数组了,如果是字节数组,就用ISO-8859-1格式转成字节数组
out.write("<script>parent.refresh(" + path + ");</script>");
out.flush();
}catch(Exception e){
e.printStacktrace();
}finally{
if(out != null){
try{out.close();}catch(Exception e1){}
}
}
}