我有以下代码,在浏览后读取文件名,并使用POST将其发送到另一个页面。如果我在$ .post之后有警报,那么它工作正常。如果我删除警报消息,则post不会将文件名转发到另一个页面。
<input type="file" name="fileupload" id="fileupload" value="">
// Jquery代码
$("#fileupload").change(function() {
if ($("#fileupload").val().length > 0) {
$.post("ReadExcel.jsp", {
filename: $("#fileupload").val(),
processId: < %= processId % >
});
alert($("#fileupload").val()); // **If I remove this alert, then the code doesn't works**
}
location.reload();
});
答案 0 :(得分:2)
我很难用jQuery发布文件数据,所以我创建了一个表单并添加了一个i框架并使用了旧的表单方法。我不确定你到底想要实现什么,(发布文件数据,或只是文件名),但无论如何这里有一些提示。
我的赌注是,当您发出警报时,脚本会暂停您点击确定的时间,以便有时间从帖子中实际获得他的回复。当您将其取下时,脚本会在客户端收到答案之前继续执行。
修改您的代码,以便您的下一个操作在回调中(将在获得响应后运行); $ .post(文件名,值,回调);
此代码应该有效:
<input type="file" name="fileupload" id="fileupload" value="">
// Jquery code
$("#fileupload").change(function() {
if($("#fileupload").val().length > 0) {
$.post("ReadExcel.jsp", {
filename: $("#fileupload").val(),
processId: <%=processId%>
},function(data){
location.reload(); //THIS IS THE CALLBACK
});
alert($("#fileupload").val()); // **If I remove this alert, then the code doesn't works**
}
});
注意第三个参数中的函数(data){}。 data表示返回的值,因此您可以使用它来验证脚本是否正常运行。你只需返回一个值,可以是任何东西,我使用0和1,如真或假。
所以通过
更改回调if(data ==1) location.reload();
else alert("something went wrong");
您将能够通知用户出现问题。
jQuery帖子是一件了不起的事情,回调也是很棒的工具..很高兴
答案 1 :(得分:0)
也许是这样的?
$("#fileupload").change(function() {
if ($("#fileupload").val().length > 0) {
$.post("ReadExcel.jsp", {
data: {
'variable-name' : $("#fileupload").val()
},
processId: < %= processId % >
});
alert($("#fileupload").val()); // **If I remove this alert, then the code doesn't works**
}
location.reload();
});