加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax初体验

发布时间:2020-12-16 01:38:49 所属栏目:百科 来源:网络整理
导读:一直以来对于ajax的逻辑似懂非懂,主要是这种技术牵涉的东西太多,比如后台数据的获取及和前端的结合,说起来容易,但做起来难,原因是还没有掌握ajax骨干方面的东西,并且也不知道如何测试,后来做shopnc商城,读取源码,试着自己做了个点击数的ajax,没想

一直以来对于ajax的逻辑似懂非懂,主要是这种技术牵涉的东西太多,比如后台数据的获取及和前端的结合,说起来容易,但做起来难,原因是还没有掌握ajax骨干方面的东西,并且也不知道如何测试,后来做shopnc商城,读取源码,试着自己做了个点击数的ajax,没想到竟然有点门了。

比如先要理顺ajax代码的主要骨干,先把它理出来,具体里面的一些细节就好办了。

(function($) {
$.fn.microshop_click = function() {


return this.each(function() {

$(this).click(submit_like);
});
function submit_like() {

$.getJSON("index.php?act=like&op=click_result",function(json){

});
}


}
})(jQuery);

服务器端的是

public function click_resultOp(){
// $model_micro = Model('micro_store');
// $result = $model_micro->getClassStoreNav(array('microshop_store_id' => array(3)),null,'comment_count','');
// self::echo_json($result);
// //print_r(self::echo_json($result));
// }
$arr = array('name'=>'李三','age'=>34,'sex'=>'男');
self::echo_json($arr);
}

测试时在地址栏中输入http://localhost/microshop/index.php?act=like&op=click_result

就可以得到服务器传来的json数据,测试时可以用chrome中的F12中的network,其中preview里可以看见json格式



现在回想一下为啥ajax容易学,但不容易掌握,主要是服务器端的玩法不理解,就拿shopnc的喜欢数来分析:

public function like_saveOp() {

$data = array();
$data['result'] = 'true';
$data['message'] = Language::get('microshop_like_success');

$like_id = intval($_GET['like_id']);
$like_type = self::get_channel_type($_GET['type']);
if($like_id <= 0 || empty($like_type)) {
$data['result'] = 'false';
$data['message'] = Language::get('wrong_argument');
//echo $data['message'];
self::echo_json($data);
//echo $like_id.'-------------';
}

if(!empty($_SESSION['member_id'])) {
$param = array();
$param['like_type'] = $like_type['type_id'];
$param["like_object_id"] = $like_id;
$param['like_member_id'] = $_SESSION['member_id'];
$model_like = Model('micro_like');
$is_exist = $model_like->isExist($param);
if(!$is_exist) {
$param['like_time'] = time();
$result = $model_like->save($param);
if($result) {

//喜欢计数加1
$model = Model();
$update = array();
$update['like_count'] = array('exp','like_count+1');
$condition = array();
$condition[$like_type['type_key']] = $like_id;
$model->table("micro_{$_GET['type']}")->where($condition)->update($update);

//返回信息
$data['result'] = 'true';
} else {
$data['result'] = 'false';
$data['message'] = Language::get('nc_common_save_fail');
}
} else {
$data['result'] = 'false';
$data['message'] = Language::get('microshop_like_fail');
}
} else {
$data['result'] = 'false';
$data['message'] = Language::get('no_login');
}

self::echo_json($data);
//echo $like_id.'-------------';
}

其中 $like_id = intval($_GET['like_id']);是通过ajax服务器中的数据请求地址http://localhost/microshop/index.php?act=like&op=like_save&type=store&like_id=6来获得的,如地址中有这个参数like_id=6这样intval($_GET['like_id'])就派上用场了。那么这里为啥要搞一个html页面中的id值呢,这里就是一个技巧,因为这个值就是店铺的id,另外这里还有一个不符合html规范的写法,即一个页面中有很多like_id,不过这并不影响正确显示,并且这里用很多重复的like_id主要是因为取值时,sql条件要用到店铺这个id号。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读