当前位置: 移动技术网 > IT编程>开发语言>Jquery > 学习备忘录

学习备忘录

2018年12月20日  | 移动技术网IT编程  | 我要评论

 跨域

  接触到的解决跨域的方法 jsonp,cors

cors

  在服务器端设置  access-control-allow-origin:*

1 header( 'access-control-allow-origin:*' ); //所有访问
2 
3 header( 'access-control-allow-origin:http://www.study.com');//特定网站

jsonp

  本质是利用 html中的<scirpt>标签具有跨域性的特点,通过<script>异步发送请求。

服务端返回一个特定字符串。这个字符串被js解析成一个函数调用。参数就是服务器传输的数据。

此方法需要前后端配合完成。只能以get方式请求。ps:耗时操作都是异步,如请求,定时器

  jquery中的jsonp

jquery的$.ajax()方法集成了jsonp的实现。用法如下:

 1  $.ajax({
 2             url:" ",
 3             data:{
 4                 
 5             },
 6             datatype:'jsonp',//与ajax没啥关系,ajax用的是xmlhttprequest对象的方法
 7             jsonp:""//传输的函数名,配合后台
 8             success:function(result){
 9              
10             }
11         });

 

cookie&session

  session依赖于cookie,因为cookie在浏览器中记录服务器的数据。session在服务器中生成一个文件,将文件名通cookies在浏览器中保存。如果浏览器禁止cookie则登录操作必须在每个页面进行一次。在百度贴吧中如果禁止cookie,则无法进行登录操作,在b站中如果禁止cookie则不显示登录按钮。

  用ip代替cookie?ip理论上是可以代替cookie进行验证的。方法是将ip和账号密码绑定。但ip可以造假,所有ip代替cookie实际上是不行的。

  在php中cookie和session的用法

        session_start();//无论读写session,都必须先调用session_start()方法
        $_session["user"] = array(
          "username" => $_post["username"],
          "userpwd" => $_post["password"],
          "islogin" => "yes"
        ); 

    

   // 有效期 的单位是秒。它的时间参照是php默认起始时间(1970-1-1)
   // setcookie("username","jack",time() + 10);
   // 设置永久存储的cookie
   // setcookie("username","jack",php_int_max);

  // 通过path设置访问权限:目录的设置是参照网站根目录的
  // 1.设置目录为父级目录,子目录也能访问
  // 2.设置目录为子级目录,父级目录不能访问
  // /代表整站都能访问
  setcookie("username","jack",php_int_max,"/");


  // 怎么创建就应该怎么删除:方法的参数应该对应
  // setcookie("username","jack",php_int_max,"/");
  // setcookie("username","");
  setcookie("username","",php_int_max,"/");

 

jquery中$.ajax()传输文件

  在xmlhttprequest2.0中,用 构造函数formdata(表单元素)来收集表单中的数据,发送post请求时不需要设置请求头。如果设置则会出错。formdata中的参数必须是一个dom元素。jquery对象 不是dom 元素。$("form")[0]才是dom对象。示例代码如下:

 1         var uploading = false;
 2         $("#sub").click(function () {
 3             if (uploading) {
 4                 alert("文件正在上传中,请稍候");
 5                 return false;
 6             }
 7             console.log(new formdata($('#form1')[0]));//必须加索引,不然无法读取到表单中的数据
 8             // $('#form1')[0]是取出id=form1的元素,至于为什么是[0],这是因为jquery对象都有一个默认为0的索引用来取出其dom元素,
          $('f')是一个jquery对象,[0]为dom元素 可以用dom的所有属性和方法 9 //formdata 中必须是一个dom元素 不能是jq对象 10 $.ajax({ 11 type: "post", 12 url: "03-uploadfile.php", 13 data: new formdata($('#form1')[0]),//必须加索引,不然无法读取到表单中的数据 14 datatype: 'json', 15 beforesend: function(){ 16 uploading = true; 17 }, 18 processdata: false, //jq上传文件必须 不设置 setrequeryheadrt() 19 contenttype: false,//jq上传文件必须设置为fasle 不改变传输文件 参考https://www.cnblogs.com/henuyuxiang/p/6656001.html 20 success: function (res) { 21 console.log(res); 22 uploading = false; 23 } 24 }); 25 });

mysql

  在代码中有存储数据的用number ,string,array,objec,在数据库中有int char。那么数据库中是否能存储数组呢。

答案是不能的。数据库无法存储数组。那么有一个用户表 和一个商品表。一个用户可以拥有多种商品。一个商品也可被多个用户拥有。这种联系该如何存储呢?

  虽然数据库不能存储数组,但是数据库能存储字符串。将字符串按特定的符合分割就是数组了。

  在数据库中一般用  1,2,3,4 这种形式存储数组型数据。在查询时使用 find_in_set查找,代码如下:

select * from user where find_in_set(id,"1,2")

xmlhttprequest

        var xhr = new xmlhttprequest();
        xhr.open("get","index.php");
        xhr.setrequestheader("content-type","application/x-www-form-urlencoded");//如果是post需要设置
        xhr.send(null);//数据是字符串 key=value&key1=value1
        xhr.onreadystatechange = function(){
            if(xhr.status = 200 && xhr.readystate == 4){
                console.log(xhr.responsetext);
            }
        }

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网