zoukankan      html  css  js  c++  java
  • ecshop中ajax的调用原理 1

    ecshop中ajax的调用原理

     

    1:首先ecshop是如何定义ajax对象的。

         ecshop中的ajax对象是在js/transport.js文件中定义的。里面是ajax对象文件。声明了一个var Ajax = Transport;对象和一个方法Ajax.call = Transport.run;

     

    2:ecshop中ajax可以使用两种方式传递数据.一种是get方式,一种是post方式.

         Ajax.call( 'user.php?act=is_registered', 'username=' + username, registed_callback , 'GET', 'TEXT', true, true );

         Ajax.call('user.php?act=return_to_cart', 'order_id=' + orderId, returnToCartResponse, 'POST', 'JSON');

      

    3:ecshop中的 ajax可以是传递text数据,也可以是一个json对象。比如以下代码

       goods.quick    = quick;
      goods.spec     = spec_arr;
      goods.goods_id = goodsId;
      goods.number   = number;
      goods.parent   = (typeof(parentId) == "undefined") ? 0 : parseInt(parentId);

      Ajax.call('flow.php?step=add_to_cart', 'goods=' + goods.toJSONString(), addToCartResponse, 'POST', 'JSON');

       里面的goods就是对象.而且是靠json来传递的。返回的结果result也是对象.

     

    4:ecshop ajax函数里面.第三个参数就是回掉函数的名称。比如以上代码addToCartResponse 这个函数就是ajax处理结果的回调函数.

     

    5:在ecshop的php代码中,一般是通过get或者post方式来接受函数。比如以下例子,如果接受的是对象。还需要用json数据格式来处理.比如以下

       include_once('includes/cls_json.php');
        $_POST['goods'] = json_str_iconv($_POST['goods']);
       处理的返回结果,也需要是json格式发送给js

       die($json->encode($result));

    例如:

    HTML

    1. <input type="button" name="search" value="{$lang.button_search}" onclick="searchUser();" />  
    2.   
    3. <select name="user_search[]" id="user_search" size="15" style="260px" ondblclick="addUser()" multiple="true">  
    4.       </select>  


     

     

    [javascript] view plaincopy
    1. /** 
    2. * 按用户名搜索用户 
    3. */  
    4. function searchUser()  
    5. {  
    6.   var eles = document.forms['theForm'].elements;  
    7.   
    8.   /* 填充列表 */  
    9.   var keywords = Utils.trim(eles['keyword'].value);  
    10.   if (keywords != '')  
    11.   {  
    12.     Ajax.call('bonus.php?is_ajax=1&act=search_users''keywords=' + keywords, searchUserResponse, "GET""JSON");  
    13.   }  
    14. }  
    15.   
    16. function searchUserResponse(result)  
    17. {  
    18.   var eles = document.forms['theForm'].elements;  
    19.   eles['user_search[]'].length = 0;  
    20.   
    21.   if (result.error == 0)  
    22.   {  
    23.     for (i = 0; i < result.content.length; i++)  
    24.     {  
    25.       var opt = document.createElement('OPTION');  
    26.       opt.value = result.content[i].user_id;  
    27.       opt.text  = result.content[i].user_name;  
    28.       eles['user_search[]'].options.add(opt);  
    29.     }  
    30.   }  
    31. }  


    php代码

      1. /*------------------------------------------------------ */  
      2. //-- 搜索用户  
      3. /*------------------------------------------------------ */  
      4. if ($_REQUEST['act'] == 'search_users')  
      5. {  
      6.     $keywords = json_str_iconv(trim($_GET['keywords']));  
      7.   
      8.     $sql = "SELECT user_id, user_name FROM " . $ecs->table('users') .  
      9.             " WHERE user_name LIKE '%" . mysql_like_quote($keywords) . "%' OR user_id LIKE '%" . mysql_like_quote($keywords) . "%'";  
      10.     $row = $db->getAll($sql);  
      11.   
      12.     make_json_result($row);  
      13. }  
    不掉到水里,也永不知道自己有多大潜力!
  • 相关阅读:
    PAT (Advanced Level) 1010. Radix (25)
    PAT (Advanced Level) 1009. Product of Polynomials (25)
    PAT (Advanced Level) 1008. Elevator (20)
    PAT (Advanced Level) 1007. Maximum Subsequence Sum (25)
    PAT (Advanced Level) 1006. Sign In and Sign Out (25)
    PAT (Advanced Level) 1005. Spell It Right (20)
    PAT (Advanced Level) 1004. Counting Leaves (30)
    PAT (Advanced Level) 1001. A+B Format (20)
    PAT (Advanced Level) 1002. A+B for Polynomials (25)
    PAT (Advanced Level) 1003. Emergency (25)
  • 原文地址:https://www.cnblogs.com/guolanzhu/p/3457468.html
Copyright © 2011-2022 走看看