Javascript与Ajax

  不使用jquery来处理ajax请求该怎么做?
  首先要明确html中的某些数据需要从服务端获得,也就是客户端向服务端请求(request)数据,服务端就响应(response)这个请求,把客户端要的数据给它。服务端返回的数据格式多样,即可以是字符串,也可以是数字,也可以是对象。客户端接到这些数据后按自己的需要处理后显示在Html页面上。这个处理工作就交给Javascript来做。
    Javascript处理Ajax异步请求要注意三点:
  1、创建一个新的XMLHttpRequest对象;
  2、创建一个获取数据的函数;
  3、创建一个回调函数;

  我们的目标是在文本框内输入名字传递给服务端,经过计算后在当前页面显示从服务端送回的数据。

<!DOCTYPE html>
<html>
  <body>
    <a href="http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro2/">Ajax study</a>
    </br>
    Enter your name:
    <input type="text" id="name" onChange="getInfo();" />
    </br>
    Show Ajax return data: <span id="getInfo"></span>

    <script type="text/javascript">
     // javascript Ajax
     // 创建新的请求对象
     var request =new XMLHttpRequest();

     // 获取数据
     function getInfo(){
       var name=document.getElementById('name').value;
       var url="/get_info/"+escape(name);
       // 打开请求
       request.open("GET",url, true);
       // 指定回调函数
       request.onreadystatechange=updatePage;
       // 发送请求(发送的内容为null表示通过Get请求)
       request.send(null);
     }

     // 回调函数(服务器向网页发起调用)
     function updatePage(){
       if(request.readyState==4){
         if(request.status==200){
           // 读取响应文本
           var response=request.responseText;
           // 可以处理返回的文本。若是json字符串则可转为对象以便处理。
           // 转换为json对象的方式多种:
           var jsonObj=eval('('+response+')');
           // 或者:
           var jsonobj=JSON.parse(response);
           // 把数据返回给页面
           document.getElementById('getInfo').innerHTML=jsonobj.name;
           alert('You enter is : '+ jsonobj.name);
         }
       else if(request.status==404)
         alert('request url does not exist.');
       else
         alert('error:status code is :' + request.status)
       }
     }
    </script>
  </body>
</html>

这里的

 var response=request.responseText;

返回的就是一个字符串:

"{\n "age": 2,\n "name": "Hello world "\n}"

服务端代码:

# 这个显示 info.html 页面
@app.route('/info') def xxx(): return render_template('info.html')


# 这个是要执行的动作(必须要有个路由,html页面里的js需要这个url。函数名字随便起。)
@app.route('/get_info/<name>') def x (name): ls ={'name':name, 'age':2} return jsonify(ls)
 

-- End --

posted @ 2015-07-11 23:28  ibg  阅读(317)  评论(0编辑  收藏  举报