ajax:
//获取商品属性数据
function initGoodsAttr(){
  $.ajax({
      type: 'GET',
      url:"<?php echo WX_SITE_URL.'/wx_shop.php?act=goods&op=goods_info_json&id_type='.$output['id_type'].'&goods_id='.$output['goods_id'];?>",
      data:'',
      dataType: 'json',
      success: function(data){
        if (data.statusCode == '200') {
          goods = data.result;
          initAttrPage(openid);
          currentGoodsCount = 1;
        }
      },
      error: function(xhr, type){
          alert('商品属性获取失败!');
      }
  });
}
 
 
商城跳转:
 
 
 
 
 
微信执行请求的方法:
$appid = "";
$appsecret = "";
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$jsoninfo = json_decode($output, true);
$access_token = $jsoninfo["access_token"];
 
 
 
weiPHP中持久层的代码:
if (! empty ( $_REQUEST ['shop_id'] )) {
  $this->shop_id = I ( 'shop_id' );
  session ( 'wap_shop_id', $this->shop_id );
} else {
  $this->shop_id = session ( 'wap_shop_id' );
}
 
$map ['token'] = get_token ();
 
 
后台json的解析:
app提交:
$raw_str = $GLOBALS['HTTP_RAW_POST_DATA'];
$post = json_decode($raw_str);
$cate_id = intval($post->cate_id)>0 ? $post->cate_id : 0;//商品分类
 
Ajax提交:
(前)
var data = JSON.stringify(cart);
 
(后)
$str2 = file_get_contents("php://input");
$post = json_decode($str2);
$result = add_cart($post->member_id, $post->cart_all);
 
 
(前)
var data = {
    "mobile_phone": username
};
(后)
$mobile_phone = $_POST['mobile_phone'];
 
jquery操作html:
判断没有没有类:$(".product-subtract").hasClass("grey")
移除类:$(".product-subtract").removeClass("grey");
增加类:$(".product-subtract").addClass("grey");
内容获取:$(".attr-info").html(); 
内容赋值:$(".attr-info").html(color_value+","+ size_value); 
获取属性值:var dbg = the_size.attr("data_belong_goods");// 取出当前size所从属的商品id
修改属性值:$("#spec_image").attr("src",good.spec_image);
元素后追加内容:$('.row').after(goods);
元素前追加内容:$('.row').before(goods);
内部后追加内容:$('.row').append(goods);
内部前追加内容:$('.row').prepend(goods);
移除:$("#div1").remove();
隐藏:$("#div1").hide();
显示:$("#div1").show();
页面刷新:location.reload();
返回上一页并刷新:location.href = document.referrer
返回上一页不刷新:window.history.go(-1);
选择到多个元素后到遍历:
$(".attr").each(function (){}
获取父节点:
var thisPlus = $(this);
var thisGrid = thisPlus.closest('._grid');
 
js类型转换
count =Number(clothe.goods_storage);
str =String(clothe.goods_name);
var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
 
js数组:
var  array = [];
array.push(temp_color);
 
空值判断:
 if (openid.length == 0)
 
js价格计算:
var test = '1.11';
var test2 = '1.01';
alert((Number(test)-Number(test2)).toFixed(2));
 
js页面跳转:
window.location.href='<?php echo WX_SITE_URL.'/wx_shop.php?act=member&op=loginPage'?>';
 
 
js  使用post请求跳转页面的方法(将参数封装到一个form内);
    $("#service").click(function () {
      var data = {
        "goods_id":"<?php echo $output['goods_info']['goods_commonid']; ?>",
        "isSingle":"0",
        "goods_price": $(".member-price").html()
      };
      standardPost("<?php echo WX_SITE_URL.'/wx_shop.php?act=goods&op=openim'?>", data);
    });
 
    function standardPost (url,args)
    {
      var body = $(document.body),
          form = $("<form method='post'></form>"),
          input;
      form.attr({"action":url});
      $.each(args,function(key,value){
          input = $("<input type='hidden'>");
          input.attr({"name":key});
          input.val(value);
          form.append(input);
      });
      form.appendTo(document.body);
      form.submit();
      document.body.removeChild(form[0]);
    }
 
    //使用form提交数据。 带array
      function standardPost (url,args){
        var body = $(document.body),
          form = $("<form method='post'></form>"),
          input;
        form.attr({"action":url});
        $.each(args,function(key,value){
          if (Object.prototype.toString.call(value) === '[object Array]') {
            for (var i = 0; i < value.length; i++) {
              var name = key+"[]";
              input = $("<input type='hidden'>");
              input.attr({"name":name});
              input.val(value[i]);
              form.append(input);
            }
          }else{
            input = $("<input type='hidden'>");
            input.attr({"name":key});
            input.val(value);
            form.append(input);
          }
         });
        form.appendTo(document.body);
        alert($("form").html());
        form.submit();
        document.body.removeChild(form[0]);
      }
 
 
 
 
 
php:
数组长度:count(array) 
数组增加:array_push($a,"blue","yellow");
字符串相等:
if (strcasecmp($output['goods_info']['return_price'], '0.00')==0)
或恒等式:
if ($output['goods_info']['return_price'] ==="0.00")
 
类型转换:
$foo = "1"; // $foo 是字符串类型 
$bar = intval($foo); // $bar 是整型 
 
分割字符串: 
$cart_id = explode(',', $_GET['cart_id']);
 
空值检查:
(!isset($mobile_phone) || empty($mobile_phone)
 
 
 
合成图片:
<?php
function mergerImg($imgs) {
 
        list($max_width, $max_height) = getimagesize($imgs['dst']);
        $dests = imagecreatetruecolor($max_width, $max_height);
 
        $dst_im = imagecreatefrompng($imgs['dst']);
 
        imagecopy($dests,$dst_im,0,0,0,0,$max_width,$max_height);
        imagedestroy($dst_im);
 
        $src_im = imagecreatefrompng($imgs['src']);
        $src_info = getimagesize($imgs['src']);
        imagecopy($dests,$src_im,0,$max_height/2,0,0,$src_info[0],$src_info[1]);
        imagedestroy($src_im);
 
        header("Content-type: image/jpeg");
        imagejpeg($dests);
}
 
$imgs = array(
        'dst' => 'http://www.*/*.png',
        'src' => 'http://www.*/*.png'
);
 
 
 <?php echo WX_TEMPLATES_URL;?>/

技术总结PHP+微信的更多相关文章

  1. 微信技术分享:微信的海量IM聊天消息序列号生成实践(算法原理篇)

    1.点评 对于IM系统来说,如何做到IM聊天消息离线差异拉取(差异拉取是为了节省流量).消息多端同步.消息顺序保证等,是典型的IM技术难点. 就像即时通讯网整理的以下IM开发干货系列一样: <I ...

  2. 腾讯技术分享:微信小程序音视频与WebRTC互通的技术思路和实践

    1.概述 本文来自腾讯视频云终端技术总监rexchang(常青)技术分享,内容分别介绍了微信小程序视音视频和WebRTC的技术特征.差异等,并针对两者的技术差异分享和总结了微信小程序视音视频和WebR ...

  3. 腾讯技术分享:微信小程序音视频技术背后的故事

    1.引言 微信小程序自2017年1月9日正式对外公布以来,越来越受到关注和重视,小程序上的各种技术体验也越来越丰富.而音视频作为高速移动网络时代下增长最快的应用形式之一,在微信小程序中也当然不能错过. ...

  4. 技术博客——微信小程序UI的设计与美化

    技术博客--微信小程序UI的设计与美化 在alpha阶段的开发过后,我们的小程序也上线了.看到自己努力之后的成果大家都很开心,但对比已有的表情包小程序,我们的界面还有很大的提升空间,许多的界面都是各个 ...

  5. 技术博客--微信小程序canvas实现图片编辑

    技术博客--微信小程序canvas实现图片编辑 我们的这个小程序不仅仅是想给用户提供一个保存和查找的平台,还希望能给用户一个展示自己创意的舞台,因此我们实现了图片的编辑部分.我们对对图片的编辑集成了很 ...

  6. 技术博客——微信小程序的架构与原理

    技术博客--微信小程序的架构与原理 在两个月的微信小程序开发过程中,我曾走了不少弯路,也曾被很多现在看来十分可笑的问题所困扰.这些弯路与困扰,基本上都是由于当时对小程序的架构理解不够充分,对小程序的原 ...

  7. 微信跳转技术,浏览器唤起微信,weixin://dl/business/?ticket=

    weixin://dl/business/?ticket=  到底怎么生成的?调用以下接口 weixin://dl/scan 扫一扫weixin://dl/feedback 反馈weixin://dl ...

  8. 分享Azure DevOps技术,来微信群吧!

    现在QQ用户越来越少,基本上都转移到微信上了. 讨论问题,动不动就来一个微信群.下面这样几百人的微信群,专门讨论Azure DevOps (TFS)技术,你加入了么? 还等什么,扫描吧!

  9. 史上最全最强Charles截取手机https协议数据包教程(附上利用此技术制作最近微信比较火的头脑王者辅助外挂)!

    纯原创,思路也是本人花了半个小时整理出来的,整个完成花费了本人半天时间,由于不才刚大学毕业,所以有的编码方面可能不入大牛们的眼,敬请原谅!如有转载请附上本地址,谢谢! 最近微信朋友圈刚刚被跳一跳血洗, ...

随机推荐

  1. C++ 字符串转化成浮点型

    第一种: char  szString[] = "3.1415926535898"; double db1; db1 = atof(szString); printf(" ...

  2. lodash 工具库

    lodash是一套工具库,内部封装了很多字符串.数组.对象等常见数据类型的处理函数. 1.lodash的引用 import _ from 'lodash' 用一个数组遍历来说明为什么要使用lodash ...

  3. Eclipse Mylyn成为顶级项目

    http://www.infoq.com/cn/news/2010/09/eclipse-mylyn/ 作为应用程序的生命周期管理工具,Eclipse Mylyn项目已经被提升为顶级的Eclipse项 ...

  4. nginx php 使用unix socket 还是tcp?

    两种通信方式的分析和总结 从原理上来说,unix socket方式肯定要比tcp的方式快而且消耗资源少,因为socket之间在nginx和php-fpm的进程之间通信,而tcp需要经过本地回环驱动,还 ...

  5. usb转串口模块下载时遇到的问题

    ch340g usb转TTL模块,烧写wifi模块ESP8266固件时,为图省事,我直接用的该模块的3.3v电为wifi模块供的电,结果刚一上电就出现串口模块消失(听到噔的一声),电脑设备管理器里就看 ...

  6. 【转载】Highcharts使用指南

    另附几个较好的图形组件库: 基于HTML5的开源画图组件:http://www.ichartjs.com/gettingstarted/ 图表Echarts: http://echarts.baidu ...

  7. python-获取操作系统信息

    #!/usr/bin/env python #-*- coding:utf-8 -*- ############################ #File Name: test_platform.p ...

  8. java - day10 - uptest

    package day03; public class UpTest { public static void main(){ Aoo o = new Aoo(); o.a = 3; o.b = 3; ...

  9. OC-2-字符串

    课程要点: C语言字符串与OC语言字符串的区别 类方法与对象方法的区别 理解NSString(可变字符串)和NSMutableString(不可变字符串)的差异 NSString(不可变字符串) NS ...

  10. Log4E插件使用记录

    在Java编程中,为了调试使用一大堆的System.out.println()或者是System.err.println查看程序的执行,最后由于懒得注释导致发布正式版时需要遍历并注释.而大量的Syst ...