ajax编写购物车遇到的问题

使用超全局变量$_SESSION[]

1.在文件开始时开启:session_start();

2.$_SESSION[]输出结果是数组

3.$_SESSION[]存在缓存中,清理缓存会清除数据

4.可以用来存放常用变量,获取方式为$_SESSION[“键名”]

验证登录

用$_SESSION[]判断登录传过来的值是否为空,如果空则调回登录页面

<?php
    session_start();
    if($_SESSION["uid"] ==""){
        header("location:login.php");
    }
?>

当调用多次相同的方法时,可以将方法封装,以后调用文件即可

js常用格式

页面初始化

window.onload = function(){
    //初始化页面
    initHTML();
}

function initHTML(){
    //创建对象
    var xhr=new XMLHttpRequest();
    //发起请求
    xhr.onreadystatechange =function(){
        if(xhr.readyState==4){
            var str = xhr.responseText;
            var arr=str.split("@");

//将ajax传过来的值赋给方法
            table(arr[1]);
            p(arr[0]);
            
        }
    }
    xhr.open("post","php/index_php.php");
    xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
    //发送数据
    xhr.send("type=init");
}

问题:post传值后台接受空值

1.漏写头文件

 xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');

2.传值的变量没有正确的获取到(检查获取变量获取方式)

3.后台接受方式出错(以post传值用get接受)

常用方法

1.php数组转字符串

将二维数组转换成字符串

session_start();
    $arr=$_SESSION["data"];
    if(empty($arr)){
        echo "";
    }else{
        foreach($arr as $k=>$v){
            $attr[]=join(",",$v);
        }
        echo join("^",$attr);
    }

2.js将字符串转换成二维数组

function strToArr(str,fg1,fg2){
    //将字符串转成二维数组
    var temp = str.split(fg1),
        arr = [];
    
    for(var i = 0; i<temp.length;i++){
        arr[i] = temp[i].split(fg2);
    }
    //返回二维数组
    return arr;
}

注:

var dianji=prompt("输入购买数量");

prompt自带返回值,可以直接用

array_splice($arr,$k,1);

销毁数组中从第k个下标开始数1个的元素

字符串拼接技巧

先用“”分割前面的字符串,然后加 ++

例: “name   变量  age  变量”

“name   “+变量 +”     age    “+变量

当一个页面需要处理多个ajax时

传一个自定义属性,区分每个传过来的ajax

原文地址:https://www.cnblogs.com/diverman/p/8485920.html