ecshop中ajax的調用原理

來源:互聯網
上載者:User

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}" onclick="searchUser();" /><select name="user_search[]" id="user_search" size="15" style="width:260px" ondblclick="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);}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.