Jquery $ .post问题

时间:2012-10-18 20:37:53

标签: jquery

我有以下代码,在浏览后读取文件名,并使用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();
});​

2 个答案:

答案 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();
    });​