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

    原文出处:http://blog.sina.com.cn/s/blog_78021f2a0101157f.html

     

    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

    [html] view plaincopy
     
    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. function searchUser()  
    3. {  
    4.   var eles = document.forms['theForm'].elements;  
    5.   
    6.     
    7.   var keywords = Utils.trim(eles['keyword'].value);  
    8.   if (keywords != '')  
    9.   {  
    10.     Ajax.call('bonus.php?is_ajax=1&act=search_users', 'keywords=' + keywords, searchUserResponse, "GET", "JSON");  
    11.   }  
    12. }  
    13.   
    14. function searchUserResponse(result)  
    15. {  
    16.   var eles = document.forms['theForm'].elements;  
    17.   eles['user_search[]'].length = 0;  
    18.   
    19.   if (result.error == 0)  
    20.   {  
    21.     for (i = 0; i < result.content.length; i++)  
    22.     {  
    23.       var opt = document.createElement_x('OPTION');  
    24.       opt.value = result.content[i].user_id;  
    25.       opt.text  = result.content[i].user_name;  
    26.       eles['user_search[]'].options.add(opt);  
    27.     }  
    28.   }  
    29. }  


    php代码

    [php] view plaincopy
     
    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. }  
    当你一步一个脚印的走过
  • 相关阅读:
    Yield Usage Understanding
    Deadclock on calling async methond
    How to generate file name according to datetime in bat command
    Run Unit API Testing Which Was Distributed To Multiple Test Agents
    druid的关键参数+数据库连接池运行原理
    修改idea打开新窗口的默认配置
    spring boot -thymeleaf-url
    @pathvariable和@RequestParam的区别
    spring boot -thymeleaf-域对象操作
    spring boot -thymeleaf-遍历list和map
  • 原文地址:https://www.cnblogs.com/Alviss/p/4595327.html
Copyright © 2011-2022 走看看