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值
------解决方案--------------------
貌似这个方法是不能把File给发到后台去的
如果你想多做一些尝试,可以试试 jquery ajaxfileupload这个插件。
我说说我之前的解决思路吧
页面上是这样的
<script>
function refresh(addr){
/*addr就是你上传的文件的具体路径的值。
你在这里刷新展示地址的控件,把这个值放到控件上。
*/
}
/* 当然,你也可以写一些失败之后的处理方法。甚至去轮询后台,通过session中的信息来更新前台的进度条*/
</script>
<form action="这个就不说了吧" target="submitFrame">
<!--这里是你的元素,文件,属性都在这里-->
</form>
<iframe name="submitFrame" style="display:none"></iframe>
你在JS里控制让form提交,因为form设置了target属性,所以页面不会刷新,刷新的是下面的iframe
后台Action 的Java代码里,这样写,比如你用Struts2
public void execute(){
/*
* 文件的保存之类的操作你肯定已经做完了
* 接下来从你获取到文件路径开始
*/
String path = "路径";
OutputStream out = null;
try{
out = response.getOutputStream();
&nb