0

ブラウズ後にファイル名を読み取り、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();
});​
4

2 に答える 2

2

jQueryでファイルデータを投稿するのに苦労したので、フォームを作成してiフレームで追加し、古き良きフォームメソッドを使用しました。あなたが何を達成しようとしているのか正確にはわかりませんが(ファイルデータを投稿するか、ファイル名だけを投稿するか)、とにかくここにいくつかのヒントがあります。

アラートを設定すると、[OK] をクリックする時間がスクリプトによって一時停止されるため、投稿から実際に彼の応答を取得する時間が確保されます。それを外すと、スクリプトはクライアントが応答を受け取る前に実行を続けます。

コードを変更して、次のアクションがコールバックにあるようにします (応答を取得した後に実行されます)。$.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**     
     }    
});

3 番目の引数の function(data){} に注目してください。data は戻り値を表すため、これを使用してスクリプトが正しく実行されたかどうかを確認できます。あなたは単に値を返す必要があり、何でもかまいません.0と1をtrueまたはfalseとして使用します.

したがって、コールバックを変更することにより

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

何か問題が発生したことをユーザーに通知できます。

jQuery の投稿は素晴らしいものです。コールバックも素晴らしいツールです。お楽しみください。

于 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 に答える