2017-03-03 11 views
2

私は迅速なヘルプが必要です。フォーム提出後の結果を取得

ユーザーがcsvファイルをアップロードできるようにしたい。その後、私はいくつかの解析と意味のあることを後ろのファイルで行います。最後に、結果をユーザーに表示します。ファイルをアップロードするときに、ファイルサイズが< = 250kbか、または< = 1000行であるかどうかをチェックしたいと思います。 JSPで

<form action="/Project/CSVUpload" method="post" enctype="multipart/form-data"> 
<br /> 
<input id="uploadfilebutton" type="file" name="file" class="tss-btn tss-btn-blue" accept=".csv" required /> 
<br /> 
<input id="processfilebutton" type="submit" value="Process File" class="tss-btn tss-btn-blue" /> 
</form> 

だからアップロードボタンと送信ボタンがあります。ユーザーが送信ボタンをクリックした後にステータスを戻すにはどうすればよいですか?たとえば、プロセスが失敗した場合は、ポップアップエラーメッセージを表示します。 JavaScriptで

:私はフォームを使用しないとき

function process() 
{ 
$.ajax({ 
    url:"/Project/CSVUpload", 
    type:'POST', 
    contentType: 'application/json', 
    dataType: 'json', 
    success:function(soapContents){ 

     if (soapContents.haserrors) 
     { 
      BootstrapDialog.show({ 
       title: 'Process File Failed', 
       message: soapContents.returnmessage, 
       buttons: [ { 
        label: 'Ok', 
        action: function(dialogItself){ 

         dialogItself.close(); 
        } 
       }] 
      }); 
     } 

    } 
}); 
} 

これは動作します。 enctypeはそうでなければならないので、フォームが必要です。 Javaでは

@WebServlet("/CSVUploads") 
public class CSVUpload extends HttpServlet 
{ 

public void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, java.io.IOException 
{ 
boolean hasErrors = false; 
if (CSVUpload success) // assume we get the info from CSVUpload class 
{ 
    hasErrors = true; 
} 
if (hasErrors) 
    { 
     log.error("CSVUpload: "+returnMessage); 

     // Setup JSON response. 
     JsonObjectBuilder jsonObjectBuilder = Json.createObjectBuilder(); 
     jsonObjectBuilder.add("haserrors", hasErrors); 
     jsonObjectBuilder.add("returnmessage", returnMessage); 
     JsonObject jsonObject = jsonObjectBuilder.build(); 

     // Write the JSON out as a response. 
     PrintWriter printWriter = response.getWriter(); 
     printWriter.print(jsonObject); 
     printWriter.flush(); 
    } 
} 

だから私はいくつかの変更を行い、Ajaxのクエリを処理する新しいJavaクラスを追加...それは二回提出し、最初の提出フォーム情報を取得し、第二提出されたためにチェックしています成功...私は誰が良いアイデアを持っているかわからないが、これは私がそれを動作させるために変更するものです。それはよい考えではないように思えますが、今のところうまくいきます。誰かが良いアイデアを持っている場合は、私に知らせてください、作業サンプルは素晴らしいでしょう。

+0

type = "button"に「submit」を入力すると、jsonの返信が返されます –

答えて

1

サブミットの代わりにボタンを使用します。これは、型入力の送信がフォームを送信しているためですが、ajaxを使用してリクエストを送信するためです。これが2つの要求の理由です。

+0

さて、私にお試しください。あなたのお返事ありがとうございます。 –

+0

あなたはtype = "button"を意味しませんでした。type = "submit" ...今すぐ取得します...ありがとう –

関連する問題