function bind_order_event()
{
var order_seq = 0; //设置变量等于0
//while 在进入循环时先检查条件,下面为true,那就直接进入循环
while(true) //整不明白
{
//先暂且不论Utils是什么东西, 可以肯定是一个对象
//第一次进入循环 order_seq= 0
//那么$(‘order_’+order_seq) = $(‘order_0’)
//这样看来可能是找页面上的某个元素对象
//而这个$(‘order_0’) 又是Utils的一个属性
var order_sn = Utils.$(‘order_’+order_seq); 整不明白//也就是说,如果这个存在,也就是找到了$(‘order_0’) 具体你点右键,查看源代码
//看看是不是有order_0字样的东西
if (order_sn) //这里是判断什么的?判断order_sn存在呢,还是判断值呢?
{
//e 在函数参数列表内,那么当鼠标移动,会有个事件发生,就是event,
order_sn.onmouseover = function(e) //设置函数e代表 鼠标移动?
{
//试图执行clearTimeout,如果失败,系统会转到catch
try //没明白
{
window.clearTimeout(timer); //清除时间
}
catch(e) //没明白 ——–
{
}
//估计是调用ajax,返回一个什么值
var order_id = Utils.request(this.href, ‘order_id’); //没明白
//有了order_id,调用下面这个函数,估计是显示产品
show_order_goods(e, order_id, show_goods_layer); //运行这个函数?
}
//
order_sn.onmouseout = function(e) //设置函数e代表 鼠标离开?{
hide_order_goods(show_goods_layer) //运行这个函数?}
order_seq++; 变量的值加1
}
else //否则
{
break; //终止运行
}
}全文如下:onload = function()
{
// 开始检查订单
startCheckOrder();
}/**
* 搜索订单
*/
function searchOrder()
{
listTable.filter[‘order_sn’] = Utils.trim(document.forms[‘searchForm’].elements[‘order_sn’].value);
listTable.filter[‘consignee’] = Utils.trim(document.forms[‘searchForm’].elements[‘consignee’].value);
listTable.filter[‘composite_status’] = document.forms[‘searchForm’].elements[‘status’].value;
listTable.filter[‘page’] = 1;
listTable.loadList();
}function check()
{
var snArray = new Array();
var eles = document.forms[‘listForm’].elements;
for (var i=0; i<eles.length; i++)
{
if (eles[i].tagName == ‘INPUT’ && eles[i].type == ‘checkbox’ && eles[i].checked && eles[i].value != ‘on’)
{
snArray.push(eles[i].value);
}
}
if (snArray.length == 0)
{
return false;
}
else
{
eles[‘order_id’].value = snArray.toString();
return true;
}
}
/**
* 显示订单商品及缩图
*/
var show_goods_layer = ‘order_goods_layer’;
var goods_hash_table = new Object;
var timer = new Object;/**
* 绑定订单号事件
*
* @return void
*/
function bind_order_event()
{
var order_seq = 0;
while(true)
{
var order_sn = Utils.$(‘order_’+order_seq);
if (order_sn)
{
order_sn.onmouseover = function(e)
{
try
{
window.clearTimeout(timer);
}
catch(e)
{
}
var order_id = Utils.request(this.href, ‘order_id’);
show_order_goods(e, order_id, show_goods_layer);
}
order_sn.onmouseout = function(e)
{
hide_order_goods(show_goods_layer)
}
order_seq++;
}
else
{
break;
}
}
}
listTable.listCallback = function(result, txt)
{
if (result.error > 0)
{
alert(result.message);
}
else
{
try
{
document.getElementById(‘listDiv’).innerHTML = result.content;
bind_order_event();
if (typeof result.filter == “object”)
{
listTable.filter = result.filter;
}
listTable.pageCount = result.page_count;
}
catch(e)
{
alert(e.message);
}
}
}
/**
* 浏览器兼容式绑定Onload事件
*
*/
if (Browser.isIE)
{
window.attachEvent(“onload”, bind_order_event);
}
else
{
window.addEventListener(“load”, bind_order_event, false);
}/**
* 建立订单商品显示层
*
* @return void
*/
function create_goods_layer(id)
{
if (!Utils.$(id))
{
var n_div = document.createElement(‘DIV’);
n_div.id = id;
n_div.className = ‘order-goods’;
document.body.appendChild(n_div);
Utils.$(id).onmouseover = function()
{
window.clearTimeout(window.timer);
}
Utils.$(id).onmouseout = function()
{
hide_order_goods(id);
}
}
else
{
Utils.$(id).style.display = ”;
}
}/**
* 显示订单商品数据
*
* @return void
*/
function show_order_goods(e, order_id, layer_id)
{
create_goods_layer(layer_id);
$layer_id = Utils.$(layer_id);
$layer_id.style.top = (Utils.y(e) + 12) + ‘px’;
$layer_id.style.left = (Utils.x(e) + 12) + ‘px’;
if (typeof(goods_hash_table[order_id]) == ‘object’)
{
response_goods_info(goods_hash_table[order_id]);
}
else
{
$layer_id.innerHTML = loading;
Ajax.call(‘order.php?is_ajax=1&act=get_goods_info&order_id=’+order_id, ”, response_goods_info , ‘POST’, ‘JSON’);
}
}/**
* 隐藏订单商品
*
* @return void
*/
function hide_order_goods(layer_id)
{
$layer_id = Utils.$(layer_id);
window.timer = window.setTimeout(‘$layer_id.style.display = “none”‘, 500);
}/**
* 处理订单商品的Callback
*
* @return void
*/
function response_goods_info(result)
{
if (result.error > 0)
{
alert(result.message);
hide_order_goods(show_goods_layer);
return;
}
if (typeof(goods_hash_table[result.content[0].order_id]) == ‘undefined’)
{
goods_hash_table[result.content[0].order_id] = result;
}
Utils.$(show_goods_layer).innerHTML = result.content[0].str;
}
标签归档:ec
ecshop中ajax.call使用
ecshop中的ajax非常好用,当自己第一次使用的时候,也非常吃力。当自己用多了的时候,却感觉十分简单,也特别方便。
首先,建立dwt.里面写个form进去,加个form提交时间的按扭
<img src=”images/tijiaoanniu_07.gif” width=”69″ height=”20″ border=”0″ style=”cursor:pointer” onclick=”return sub_zixun();” />
其次,在js中增加函数
function sub_zixun(){
var frm = document.forms[‘zixun_form’];
var msg_title = frm.elements[‘msg_title’].value;
var msg_phone = frm.elements[‘msg_phone’].value;
var user_email = frm.elements[‘user_email’].value;
var msg_content = frm.elements[‘msg_content’].value;
var msg = ”;
if (msg_title.length == 0)
{
msg += ‘标题不能为空’ + ‘\n’;
}
if (msg_phone.length == 0)
{
msg += ‘电话号码不能为空’ + ‘\n’;
}
if (user_email.length == 0)
{
msg += ‘Email不能为空’ + ‘\n’;
}
if (msg_content.length == 0)
{
msg += ‘评论不能为空’ + ‘\n’;
}
if (msg.length > 0)
{
alert(msg);
return false;
}
else
{
Ajax.call( ‘zixun.php?act=act_sub’, ‘msg_phone=’ + msg_phone+’&user_email=’+user_email+’&msg_content=’+msg_content+’&msg_title=’+msg_title, act_callback , ‘POST’, ‘TEXT’, true, true );
}
}
3:增加回调函数act_callback ()
function act_callback(result){
if(result == ‘true’){
alert(“提交评论成功”);
}else{
alert(“提交评论失败”);
}
}
处理ajax回调值的结果
elseif ($act == ‘act_sub’){
include_once(ROOT_PATH . ‘includes/lib_clips.php’);
$message = array(
‘user_id’ => $_SESSION[‘user_id’],
‘user_name’ => $_SESSION[‘user_name’],
‘user_email’ => isset($_POST[‘user_email’]) ? htmlspecialchars(trim($_POST[‘user_email’])) : ”,
‘msg_type’ => isset($_POST[‘msg_type’]) ? intval($_POST[‘msg_type’]) : 0,
‘msg_title’ => isset($_POST[‘msg_title’]) ? trim($_POST[‘msg_title’]) : ”,
‘msg_content’ => isset($_POST[‘msg_content’]) ? trim($_POST[‘msg_content’]) : ”,
‘order_id’ => 0,
‘msg_area’ => 1,
‘msg_phone’ => trim($_POST[‘msg_phone’]),
‘upload’ => array()
);//留言板提交的数据
if (add_message($message)){
echo ‘true’;
}else{
echo ‘false’;
}
}
这样就完成了一次ecshop中ajax的所有调用步骤。