純javascript的ajax實現php非同步提交表單

來源:互聯網
上載者:User

很多時候需要非同步提交表單,當表單太多是時候,一個個getElementById變得很不實際

當然,jquery可以實現非同步提交表單,jquery.form.js這個庫貌似也挺流行

只是有時候並不想使用額外的庫,所以就琢磨著自己寫,用純js來實現非同步提交表單

實現如下(本例用POST方式提交,用php作為伺服器指令碼)

HTM L檔案:test

<html><head>    <script type="text/javascript" src="name_form.js"></script></head><body>    <form action="process.php" id="ajax_form">        Username:<input type="text" name="username" id="username"/><br>        <input type="button" onclick="submitForm('name_form')" value="Submit">    </form>    <div id="tip"></div></body></html>


JS檔案:name_form.js

function createXmlHttp() {    var xmlHttp = null;         try {        //Firefox, Opera 8.0+, Safari        xmlHttp = new XMLHttpRequest();    } catch (e) {        //IE        try {            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");        } catch (e) {            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");        }    }         return xmlHttp;} function submitForm(formId) {    var xmlHttp = createXmlHttp();    if(!xmlHttp) {        alert("您的瀏覽器不支援AJAX。");        return 0;    }        var url = 'test.php';    var postData = "";    postData = "username=" + document.getElementById('username').value;    postData += "t=" + Math.random();        xmlHttp.open("POST", url, true);    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    xmlHttp.onreadystatechange = function() {        if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {            if(xmlHttp.responseText == '1') {                alert('post successed');            }        }    }    xmlHttp.send(postData);}


PHP檔案:test.php

<?php    if(isset($_POST['username']) {        echo '1';    }?>


上面程式的原理是,首先使用者用過在test.html檔案中輸入使用者名稱資訊,然後通過name_form.js檔案進行ajax實現提交表單,然後在php檔案中進行操作,此處只是判斷使用者名稱是否被設定,也就是說使用者名稱是否存在,存在則輸出1;另外,也可以對資料庫進行操作(增,改等),然後判斷操作結果,如果結果為真則輸出1,在js檔案中的xmlHttp.responseText中判斷返回的資訊,因為只是輸出1,所以判斷正確,此時彈出提示框,內容是'post successed'。這樣就成功實現了用ajax實現php非同步提交表單。

註:要保證php檔案echo之前沒有任何的輸出,這樣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.