jQuery与ajax的应用(一)

<body>
        <div id="resText"></div>
        <div id="reshtml"></div>
        <script src="js/jquery/jquery-1.8.3.min.js"></script>
        <script type="text/javascript">
            $(function(){
                 $.ajax({
                     type: "get",  
                     url: "test2.json",       
                     data:{flag:"wap-mobile",mid:"m123456"},   //可选参数
                     dataType: "json",
                     success: function(data){
                         console.log(data);
                          console.log(data.result.banners);
                          //遍历banner数组,取到每个值;
                          for (var i=0;i<data.result.banners.length;i++) {
                              console.log(data.result.banners[i]);
                              
                              //只能用在少量需要DOM插入时使用;大量DOM数据时不可取。
                              var img=$("<img src="+data.result.banners[i].banners_pic+" />")
                              var div = $("#resText");
                              div.append(img);
                          }

                        for (var j=0;j<data.result.goods_list.length;j++) {
                            console.log(data.result.goods_list[j].product_name);
                            
                            //只能用在少量需要DOM插入时使用;大量DOM数据时不可取。
                              var html = '<div class="goods_list">'+
                                        '    <dl>'+
                                        '            <dt><img src='+data.result.goods_list[j].product_img_url+'/></dt>'+
                                        '            <dd>'+data.result.goods_list[j].product_name+'</dd>'+
                                        '        </dl>'+
                                        '</div>';
                              var div = $("#reshtml");
                              div.append(html);
                              
                        }
                        
                    }
                });
            });
            
        </script>
    </body>

注:

1、关于type参数:type: "get",  
  要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。

2、关于URL参数:
url: "test2.json",
  要求为String类型的参数,(默认为当前页地址)发送请求的地址。

3、关于data参数:data:{flag:"wap-mobile",mid:"m123456"},
  要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看  processData选项。对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转换为&foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。

4、关于dataType参数:dataType: "json",
  要求为String类型的参数,预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并作为回调函数参数传递。可用的类型如下:
  xml:返回XML文档,可用JQuery处理。
  html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。
  script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。
  json:返回JSON数据。
  jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。
  text:返回纯文本字符串。

5、关于success参数:
success: function(data){}
  要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。
    (1)由服务器返回,并根据dataType参数进行处理后的数据。
   (2)描述状态的字符串。
     function(data, textStatus){
         //data可能是xmlDoc、jsonObj、html、text等等
         this;  //调用本次ajax请求时传递的options参数
     }

6、关于error参数:
  要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。ajax事件函数如下:
       function(XMLHttpRequest, textStatus, errorThrown){
          //通常情况下textStatus和errorThrown只有其中一个包含信息
          this;   //调用本次ajax请求时传递的options参数
       }
7、其他更多参数省略!

8、代码格式转换网址:http://www.css88.com/tool/html2js/
var html = '<div class="goods_list">'+
           '    <dl>'+
           '            <dt><img src='+data.result.goods_list[j].product_img_url+'/></dt>'+
           '            <dd>'+data.result.goods_list[j].product_name+'</dd>'+
           '        </dl>'+
           '</div>';

9、url: "test2.json", //json格式的数据(是后台处理之后给出api接口文档)
{
    "result": {
        "banners": [
            {
                "banners_pic": "img/1.jpg"
            }
        ],
        "goods_brand": [
            {
                "brand_id": "6394",
                "brand_name": "雪花秀/SULWHASOO",
                "brand_mainpage_pic": "img/6394.png"
            },
            {
                "brand_id": "6435",
                "brand_name": "爱丽小屋/ETUDE HOUSE",
                "brand_mainpage_pic": "img/6435.png"
            },
                {
                "brand_id": "6676",
                "brand_name": "A.H.C",
                "brand_mainpage_pic": "img/6676.png"
            }
        ],
        "goods_list": [
            {
                "product_id": "10000049487",
                "product_name": "伊思蜗牛霜 60ML",
                "product_img_url": "img/01_m.jpg",
                "real_price_dollar": "47.00",
                "real_price_rmb": "321.95",
                "brand_name": "伊思/It`S SKIN",
                "vip_product_price": "173.49",
                "is_import": "0",
                "item_price": "¥191.00",
                "fenhong_vip_price": "184.30",
                "item_label": "售价"
            },
            {
                "product_id": "10002013756",
                "product_name": "MANDARINA DUCK 背包 AIRBAG 49T01001",
                "product_img_url": "img/1_m.jpg",
                "real_price_dollar": "199.00",
                "real_price_rmb": "1365.14",
                "brand_name": "意大利鸳鸯/MANDARINA DUCK",
                "vip_product_price": "1228.63",
                "is_import": "1",
                "item_price": "¥1228.63",
                "fenhong_vip_price": "1228.63",
                "item_label": "折扣价",
                "import_label": "折扣价",
                "import_price": "1228.63"
            }
        ]
        
    }
}

 =========================================================================

$.each()方法实现:

顺便说一下$.each()函数:
$.each()函数不同于JQuery对象的each()方法,它是一个全局函数,不操作JQuery对象,而是以一个数组或者对象作为第1个参数,以一个回调函数作为第2个参数。回调函数拥有两个参数:第1个为对象的成员或数组的索引,第2个为对应变量或内容。

<body>
        <div id="resText">
            <input type="text" name="username" id="username" value="中国" />
            <input type="text" name="content" id="content" value="客服回答授课计划合肥" />
        </div>
        <script src="js/jquery/jquery-1.8.3.min.js"></script>
        <script type="text/javascript">
        $(function(){
             $.ajax({
                 type: "GET",
                 url: "test.json",
                 data: {username:"name", content:"content"},
                 dataType: "json",
                 success: function(data){
                         console.log(data);
                         console.log(data.name);
                         console.log(data.content);
                         
                        $('#resText').empty();   //清空resText里面的所有内容
                        var html = ''; 
                        $.each(data, function(commentIndex, comment){
                            //html = '<div><h6>'+data.name+'</h6><p>'+data.content+'</p></div>';
                            html = '<div>'+
                                    '    <h6>'+data.name+'</h6>'+
                                    '    <p>'+data.content+'</p>'+
                                    '</div>';
                        });
                        $('#resText').html(html);
                  }
             });
        });
        
        </script>
    </body>

 test.json

{
    "name":"中国",
    "content":"客服回答授课计划合肥",
    "province":[
        {
            "name":"黑龙江",
            "cities":{
                "city":["哈尔滨","大庆"]
            }
        },
        {
            "name":"广东",
            "cities":{
                "city":["广州","深圳","珠海"]
            }
        },
        {
            "name":"台湾",
            "cities":{
                "city":["台北","高雄"]
            }
        },
        {
            "name":"新疆",
            "cities":{
                "city":["乌鲁木齐"]
            }    
        }
    ],
    "error": "0",
    "hasmore": "false",
    "msg": "提示信息",
    "total":"合计总数"
}

 =================================================================================

<body>
        <div class="ajaxResult">我们的练习题</div>
        <script src="js/jquery/jquery-1.8.3.min.js"></script>
        <script type="text/javascript">
            var num=10,    //定义的全局变量(参数)
                area="青岛市市南区",
                curpage=1;
                
            $.ajax({
                type: "get",         //以POST或GET的方式请求。默认GET。PUT和DELETE也可以用,但并不是所有的浏览器都支持
                url: "test3.json",   //请求的目的地址,须是一个字符串。
                data: {              //发送到服务器的数据的键/值对象====后台需要传过去处理的参数。get方法则附在html请求地址后面。http://192.168.1.82:8020/juzhong/test3.json?flag=wap&type=like&num=10&area=%E9%9D%92%E5%B2%9B%E5%B8%82%E5%B8%82%E5%8D%97%E5%8C%BA&curpage=1
                    flag: "wap",
                    type: 'like',
                    num: num,
                    area :area,
                    curpage: curpage
                },
                dataType:"json",     //想从服务器得到哪种类型的数据。xml,html,script,json,jsonp,text
                beforeSend: function(XMLHttpRequest){
                    //传递异步请求之前的事件。
                    alert("传递异步请求之前的事件");
                },
                success: function(data, textStatus){
                    //请求成功后的处理函数
                    $(".ajaxResult").html("");
                    console.log(data);
                    $.each(data, function(){
                        //document.write(data.d[0].CustomerName);    //宋江
                        $(".ajaxResult").append("<li>"+data.d[0].CustomerName+"</li>");
                        
                    });
                },
                complete: function(XMLHttpRequest, textStatus){
                    //不管请求成功还是错误,只要请求完成,可以执行的事件。
                    alert("不管请求成功还是错误,只要请求完成,可以执行的事件。");
                },
                error: function(){
                    alert("请求出错处理");
                    //请求出错处理
                }
            });
        </script>
    </body>

test3.json

{
    "d":[
        {
            "Unid":1, 
            "CustomerName": "宋江", 
            "Memo": "天魁星", 
            "Other": "黑三郎"
        },
        {
            "Unid":2, 
            "CustomerName": "吴用", 
            "Memo": "天机星", 
            "Other": "智多星"
        }
    ]
}

 

 

 

 更多资源:

http://www.cnblogs.com/kissdodog/archive/2012/12/09/2810545.html

 
posted @ 2017-03-10 09:50  红妆满面  阅读(263)  评论(0编辑  收藏  举报