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

<input type="button" name="search" value="{$lang.button_search}" οnclick="searchUser();" /><select name="user_search[]" id="user_search" size="15" style="width:260px" οndblclick="addUser()" multiple="true"></select>
/**
* 按用户名搜索用户
*/
function searchUser()
{var eles = document.forms['theForm'].elements;/* 填充列表 */var keywords = Utils.trim(eles['keyword'].value);if (keywords != ''){Ajax.call('bonus.php?is_ajax=1&act=search_users', 'keywords=' + keywords, searchUserResponse, "GET", "JSON");}
}function searchUserResponse(result)
{var eles = document.forms['theForm'].elements;eles['user_search[]'].length = 0;if (result.error == 0){for (i = 0; i < result.content.length; i++){var opt = document.createElement('OPTION');opt.value = result.content[i].user_id;opt.text  = result.content[i].user_name;eles['user_search[]'].options.add(opt);}}
}

php代码

/*------------------------------------------------------ */
//-- 搜索用户
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'search_users')
{$keywords = json_str_iconv(trim($_GET['keywords']));$sql = "SELECT user_id, user_name FROM " . $ecs->table('users') ." WHERE user_name LIKE '%" . mysql_like_quote($keywords) . "%' OR user_id LIKE '%" . mysql_like_quote($keywords) . "%'";$row = $db->getAll($sql);make_json_result($row);
}

ecshop中ajax的调用原理相关推荐

  1. 在windows下CorelDraw中VBE的调用原理?

    文章目录 1.谁加载了这几个库 2.apc71是什么? 3.作者答疑 直接启动CorelDraw,查看其加载模块,发现并没有加载VBE7.DLL.VBEUI.DLL和VBEUIRES.DLL,说明启动 ...

  2. python中selenium中使用ajax_selenium 智能等待ajax完成调用

    selenium 智能等待ajax完成调用 使用webdriverwater 传入一个lambda表达式 判断 ajax调用转台 当 jquery.active==0 表示ajax调用完成 仅在jqu ...

  3. ajax离开页面方法,jQuery中ajax调用当前页面方法

    $.ajax({ type: 'POST', url: 'AddressManager.aspx/GetProvince',//AddressManager.aspx当前页面 data: '{cach ...

  4. 【dubbo源码解析】--- dubbo中Invoker嵌套调用底层原理

    本文对应源码地址:https://github.com/nieandsun/dubbo-study 文章目录 1 dubbo中Invoker的重要性 2 dubbo RPC链条中代理对象的底层逻辑 2 ...

  5. 调用$.ajax不成功,jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法...

    jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Objec ...

  6. jQuery中getJSON跨域原理详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp28 jQuery中getJSON跨域原理详解 前几天我再开发一个叫 河蟹工 ...

  7. AJAX入门——工作原理

    理解同步交互和异步交互 举个例子:普通B/S模式(同步)       AJAX技术(异步)        *  同步: 提交请求->等待服务器处理->处理完毕返回  这个期间客户端浏览器不 ...

  8. ArcGIS Server 中AJAX应用系列(3)

    本文部分取自ESRI翻译部分及网络,其他文字版权归小能所有,转载麻烦标明出处,谢谢! 写作过程中也参阅了大量其他网络文档,如果您觉得侵犯版权,请和我联系:chinazhousheng@gmail.co ...

  9. jquery中ajax中的参数,jquery中的ajax参数

    jquery中将ajax封装成了函数,我们使用起来非常方便,jquery会自动根据内容选择post还是get方式提交数据,并且会自动编码,但是要想完全掌握jquery中的ajax,我们必须将它的各个参 ...

最新文章

  1. Ubuntu快速重装软件的技巧
  2. vs2012中程序集生成无法自动在网站Bin目录下生成Dll文件?(已解决!)
  3. n 模块切换 node 版本无效的解决办法
  4. Java集合TreeSet
  5. Android对应用程序签名
  6. java记录log信息
  7. 原生Js_实现广告弹窗
  8. db2中TRANSLATE函数可以实现简单的正则(不属于真正的正则表达式)
  9. 兼容性问题总结(转)
  10. 学习c++ 必知三大特性
  11. java 有限状态机_有限状态机( Finite State Machine )JAVA 版
  12. (经典)详解WINDOWS映像劫持技术
  13. 上下调基因和代谢物--不同颜色显示在同一张KEGG通路图中
  14. ES 条形图 histogram
  15. matlab 绘制扇形区域
  16. OpenMV学习(0):环境搭配
  17. 关闭电脑弹窗广告的几种方法
  18. 十一届蓝桥模拟赛 元辅音字母 JAVA
  19. zabbix邮件报警发送至qq邮箱
  20. 菜鸟教程 + Java基础课程 + part2

热门文章

  1. 案例分析 陆金所_平安陆金所介绍-关于陆金所-平安陆金所
  2. redissession有容量上限吗_空气炸锅值得买吗?
  3. jquery发送put请求_浅谈GET,POST,PUT发送请求
  4. android知乎多图片选择,知乎开源图片选择库 Matisse
  5. 2017年计算机四级试题,2017年全国计算机四级考试模拟试题与答案
  6. linux pcre-devel,ubuntu - 我应该为'pcre-devel'安装什么软件包? - Ubuntu问答
  7. 计算点云之间的平均距离,方差,标准差
  8. Linux那些事儿 之 戏说USB(12)接口是设备的接口(一)
  9. 【模板】树链剖分 P3384
  10. python归一化代码_python中的快速图像归一化