多变php服务中心

当前位置: 首页>站长学院>模板插件> ecshop中ajax的工作原理

ecshop中ajax的工作原理

来源:多变php服务中心 发布时间:2018-07-24关注度:475 ℃

ecshop中ajax的使用原理有很多开发者不太了解,下面就由多变PHP服务中心给大家总结一下:

一、 ecshop是如何定义ajax对象的

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

 

二、 ecshop中ajax数据传递方式

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'); 


三、 在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也是对象. 

 

四、 在ecshop中,ajax函数里面.第三个参数就是回掉函数的名称。譬如: 

Ajax.call('flow.php?step=add_to_cart', 'goods=' + goods.toJSONString(), addToCartResponse, 'POST', 'JSON');//addToCartResponse 这个函数就是ajax处理结果的回调函数

 

五、 在ecshop的php部分,一般是通过get或者post方式来接受函数。如果接受的是对象。需要用json数据格式来处理。譬如:

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

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

 

下面是一个demo

<html>

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

<script language="JavaScript">

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_x('OPTION');   
      opt.value = result.content[i].user_id;   
      opt.text  = result.content[i].user_name;   
      eles['user_search[]'].options.add(opt);   
    }   
  }   
}  

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

</script>

</html>

<?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);   
}

?>

 

 

 

本文地址:https://www.phpicu.com/article.php?id=38

    责任编辑:多变php服务中心

    相关阅读