为了账号安全,请及时绑定邮箱和手机立即绑定

请问ecshop中的ajax怎么用?

/ 猿问

请问ecshop中的ajax怎么用?

白衣非少年 2019-08-20 18:10:52

ecshop中的ajax怎么用


查看完整描述

3 回答

?
素胚勾勒不出你


ajax对象是在js/transport.js文件中定义的。里面是ajax对象文件。声明了一个var Ajax = Transport;对象和一个方法Ajax.call = Transport.run;
2: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 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: ajax函数里面.第三个参数就是回掉函数的名称。比如以上代码addToCartResponse 这个函数就是ajax处理结果的回调函数
5:在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 <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>
[javascript] view plaincopy
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);
}
}
}
php代码
[php] view plaincopy
//-- 搜索用户

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

查看完整回答
反对 回复 2019-08-24
?
慕森卡

ecshop 中的 ajax 非常好用,
当自己第一次使用的时候,因为之前并没有看明白transport.js这个文件的具体内容.弄得有点迷糊.
细看了一下这个文件 在js目录下transport.js这个文件.里面代码太多.这里我就不讲了.
记录下怎么用的吧. 对新手来说.这个 ajax 封装文件确实很好用.
复制这个文件到你要应用的目录这个不用说了.
新建个事件.onclick或者onblur随便你. 看它默认名称吧.
给form表单return is_registered().

然后在js文件中增加一个is_registered函数

01.function is_registered( username )
02.var submit_disabled = false;
03.var unlen = username.replace(/[^\x00-\xff]/g, "**").length;
04.if ( username == '' )
05.document.getElementById('username_notice').innerHTML = msg_un_blank;
06.var submit_disabled = true; if ( !chkstr( username ) )
07.document.getElementById('username_notice').innerHTML = msg_un_format
08.;var submit_disabled = true;
09.if ( unlen < 3 ) {
10.document.getElementById('username_notice').innerHTML = username_shorter;
11.var submit_disabled = true;
12.}
13.if ( unlen > 14 )
14.document.getElementById('username_notice').innerHTML = msg_un_length;
15.var submit_disabled = true;
16.if ( submit_disabled )
17.document.forms['formUser'].elements['Submit'].disabled = 'disabled';
18.return false;
19.Ajax.call( 'user.php?act=chk_user', 'username=' + username, registed_callback ,'GET', 'TEXT', true, true );

对用户们的检测.上面的判断你自己写.主要的就是最后一行的ajax.call了.
分析下这行代码.
1.Ajax.call( 'user.php?act=chk_user', 'username=' + username, registed_callback ,'GET', 'TEXT', true, true );

ajax.call后面的参数分别是(请求的URL地址,发送参数,回调函数,请求的方式,有"GET"和"POST"两种,响应类型,有"JSON"、"XML"和"TEXT"三种,是否异步请求的方式,是否安静模式请求)
* 调用此方法发送HTTP请求.
* @public
* @param {string} url 请求的URL地址
* @param {mix} params 发送参数
* @param {Function} callback 回调函数
* @param {string} ransferMode 请求的方式,有"GET"和"POST"两种
* @param {string} responseType 响应类型,有"JSON"、"XML"和"TEXT"三种
* @param {boolean} asyn 是否异步请求的方式
* @param {boolean} quiet 是否安静模式请求
*/
好比上面的例子,我们在js文件中继续添加一个registed_callback的回调函数.
1.function registed_callback(result)
2.if ( result == 'true' )
3.document.getElementById('username_notice').innerHTML =msg_can_rg;
4.document.forms['formUser'].elements['Submit'].disabled = '';
5.else
6.document.getElementById('username_notice').innerHTML = msg_un_registered;
7.document.forms['formUser'].elements['Submit'].disabled = 'disabled';
registed_callback的result参数就是user.PHP?act=chk_user这里输出响应结果.



查看完整回答
反对 回复 2019-08-24
?
回首忆惘然

当鼠标点击对应的选项的时候可以 通过ajax 修改他的值,这里我们说一下如果添加自己需要的选项。
我们那起边我们为ecshop增加的文章排序功能来做例子
点击这里查看ecshop文章排序字段的添加方法
我们打开后台文章列表的模板:admin/templates/article_list.htm
然后在文章标题前边插入一列,代码如下:<tdclass="first-cell"<span
onclick="javascript:listTable.edit(this, 'edit_orderid',
{$list.article_id})"{$list.orderid}</span</td
这里我们说明一下:
edit_orderid :为处理文章排序字段的方法。
$list.article_id:为从数据库中读出的文章排序的字段
然后就会出现后台的如下界面:
这个时候您的排序字段就可以看到了,我们接下来需要修改一个文章列表页所要用到的文件 admin/article.php
找到:elseif ($_REQUEST['act'] == 'edit_title')
这这个elseif语句下增加如下语句:
//-- 编辑文章排序

查看完整回答
反对 回复 2019-08-24

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信