Ajax上傳實現根據伺服器端返回資料進行js處理的方法_AJAX相關

來源:互聯網
上載者:User

本文執行個體講述了Ajax上傳實現根據伺服器端返回資料進行js處理的方法。分享給大家供大家參考。具體如下:

Ajax上傳說白了還是使用form表單提交,在當前頁面加一個iframe,將提交的內容跳轉到iframe中,造成一種頁面無重新整理的錯覺。

以前也做過上傳,基本是是使用commons-fileupload組件,基本的步驟是使用servlet處理完上傳之後,使用PrintWrite的對象執行個體輸出顯示內容,可以是直接輸出內容,也可以是輸出script進行操作如

複製代碼 代碼如下:
response.getWriter().write("<script type=\"text/javascript\"> parent.item_update.uploadUponSize();</script>");


複製代碼 代碼如下:
response.getWriter().write("上傳成功!");

這種做法是把對頁面端的操作都封裝到servlet中,現在一個需求是你接觸不到伺服器端servlet,而上傳成功之後伺服器只會返回一個標誌符,然後在頁面進行操作。
可以根據form表單提交到這個iframe時會觸發一個load事件,所以對於這個需求的思路是:

1、在form表單提交時,給iframe註冊load事件。

2、然後使用js對返回的標誌位進行判斷操作。

3、移除綁定事件,避免多次綁定事件。

下面貼一個例子。

對於伺服器端簡單一點,只會返回一個標誌位。

package com.justsy.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class UploadServlet extends HttpServlet {   private static final long serialVersionUID = 1L;   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {     this.doPost(request, response) ;   }   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {     PrintWriter writer = response.getWriter() ;     response.setContentType("text/html") ;     writer.print("<root>ok</root>") ;   } } 

js檔案

function submitForm(){   $("#hidden_iframe").load(function(){     var content = document.getElementById("hidden_iframe").contentWindow.document.body.innerHTML;     content = createXml(content);     var root = $(content).find("root").eq(0);     alert(root.text());     $("#hidden_iframe").unbind("load");   });   document.getElementById("form2").submit(); } function createXml(str){   if (document.all) {     var xmlDom = new ActiveXObject("Microsoft.XMLDOM");     xmlDom.loadXML(str);     return xmlDom;   }   else {     return new DOMParser().parseFromString(str, "text/xml");   } } 

html檔案

<form action="uploadServlet.do" id="form2" enctype="multipart/form-data" method="post" target="hidden_iframe">  <input type="hidden" name="method" value="uploadExcel" /><input type="button" value="Submit" onclick="submitForm()"/></form><iframe name="hidden_iframe" id="hidden_iframe" width="300" height="200"></iframe>

這樣就可以根據頁面返回的內容對頁面進行操作了。

希望本文所述對大家的Ajax程式設計有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.