0

我有以下代码在浏览后读取文件名并使用 POST 将其发送到另一个页面。如果我在 $.post 之后有警报,那么它工作正常。如果我删除警报消息,则 post 不会将文件名转发到另一个页面。

<input type="file" name="fileupload" id="fileupload" value="">

// 查询代码

$("#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();
});​
4

2 回答 2

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**     
     }    
});

注意第三个参数中的 function(data){}。data 表示返回的值,因此您可以使用它来验证您的脚本是否正确运行。您只需返回一个值,可以是任何值,我使用 0 和 1 作为真或假。

所以通过改变回调

if(data ==1) location.reload();
else alert("something went wrong");

您将能够通知用户出现问题。

jQuery post 是一个了不起的东西,回调也是很棒的工具..enjoy

于 2012-10-18T20:51:26.907 回答
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();
    });​
于 2012-10-18T20:44:28.437 回答