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. }  
    不掉到水里,也永不知道自己有多大潜力!
  • 相关阅读:
    Java基础知识回顾-20(泛型)
    Java基础知识回顾-19(Collect接口,Iterator迭代器与增强for循环)
    Java基础知识回顾-18(Math类,Arrays类和大数据运算)
    Java基础知识回顾-17(基本类型包装类与System类)
    Java基础知识回顾-16(Date,DateFormat和Calendar)
    PSP DAILY软件功能说明书
    第六周PSP
    王者荣耀交流协会第二次Scrum立会
    找bug——加分作业
    第五周PSP
  • 原文地址:https://www.cnblogs.com/guolanzhu/p/3457468.html
Copyright © 2011-2022 走看看