Nodejs 之Ajax的一個實例(sql單條件查詢&並顯示在Browser端界面上)


1.Broswer端的Ajax

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<h1>登錄成功</h1>
<input type="text" id="username"/>
<input type="text" id="address"/>
<button onclick="queryAll()">查詢</button>
<div>
    <table border="1" cellspacing="0" cellpadding="10" width="500px" id="mytable">
        <tr><th>id</th><th>Name</th><th>Password</th><th>Address</th></tr>
    </table>
</div>
<script>
    function queryAll(){
        var xhr;
        var mytable=document.getElementById("mytable");
        var usernameStr=document.getElementById("username").value;
        var addressStr=document.getElementById("address").value;
        if(window.XMLHttpRequest){
            xhr=new XMLHttpRequest();
        }else{
            xhr=new ActiveXObject("Microsoft","XMLHTTP")
        }
//        xhr.open("get","queryAll.do?username"+usernameStr,true);//只有get方法才可以把參數加在這里
        xhr.open("post","queryAll.do",true);
        xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
        //content-type只有在為post方法的時候才配置

        xhr.onreadystatechange=function(){
            mytable.innerHTML="<tr><th>id</th><th>Name</th><th>Password</th><th>Address</th></tr>";
            //每次刷新html數據的時候,就先會把table清空,然后再添加數據
            if(xhr.readyState==4&&xhr.status==200){
//                console.log(xhr.responseText);
                var  datalist=JSON.parse(xhr.responseText);//用json將服務器返回的字符串轉換成了數組對象
                for(var i=0;i<datalist.length;i++){
                    console.log(datalist[i].id);//通過屬性獲取值,datalist[i]是屬性
                    console.log(datalist[i].U_name);
                    console.log(datalist[i].U_pwd);
                    console.log(datalist[i].U_address);
                    mytable.innerHTML=mytable.innerHTML+"<tr><td>"+datalist[i].id+"</td><td>"
                    +datalist[i].U_name+"</td><td>"
                    +datalist[i].U_pwd+"</td><td>"
                    +datalist[i].U_address+"</td></tr>";
                }
            }
        };
        //xhr.send(null);//get方法下使用這個發送Ajax請求
        xhr.send("username="+usernameStr)//post方法將發送的參數寫在這里

    }
</script>
</body>
</html>

  2.Server端的響應:

queryUserAll:function(request,response){
          console.log(request.body);
          let name=request.body.username;
          let address=request.body.address;
          let sql="select * from t_use where U_name like ?";//單條件查詢
name="%"+name+"%"; dbconfig.getconnectionSql(sql,[name],function(err,data){ if(err==null||err==undefined){ //response.write(data);//原生的nodejs方法便發送不出去,因為data是一個object,不是字符串 //方法一 //response.write(JSON.stringify(data));//將data的object對象轉換成了字符串。**從數據庫中返回的data都是object類型,不是針對Ajax請求 //response.end(); //方法二 response.send(data);//express框架自動將數組對象轉換成了字符串, // response.send(data)就相當於response.write(JSON.stringify(data) console.log(typeof data);//打印出來是object } }) }

  3.主文件app.js中的:

app1.post("/queryAll.do",useModule.queryUserAll);

      Tips:

  1>Ajax只更新本html中的數據;

      2>B端發起Ajax請求,與S端交互進行數據操作,且**S端返回的是數據(是object類型),需要在B端用JSON進行轉換(JSON.parse(xhr.responseText))轉換成數組對象;

      3>Ajax是通過DOM來更新查詢數據,且只更新部分數據,不會刷新整個網頁的數據,像一個應用程序一樣;

      4>通過數據庫查詢返回的data都是object類型,不是針對Ajax;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM