接触到的解决跨域的方法 jsonp,
1 header( 'access-control-allow-origin:*' ); //所有访问 2 3 header( 'access-control-allow-origin:http://www.study.com');//特定网站
本质是利用 html中的<scirpt>标签具有跨域性的特点,通过<script>异步发送请求。
服务端返回一个特定字符串。这个字符串被js解析成一个函数调用。参数就是服务器传输的数据。
此方法需要前后端配合完成。只能以get方式请求。ps:耗时操作都是异步,如请求,定时器
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 });
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,"/");
在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 });
在代码中有存储数据的用number ,string,array,objec,在数据库中有int char。那么数据库中是否能存储数组呢。
答案是不能的。数据库无法存储数组。那么有一个用户表 和一个商品表。一个用户可以拥有多种商品。一个商品也可被多个用户拥有。这种联系该如何存储呢?
虽然数据库不能存储数组,但是数据库能存储字符串。将字符串按特定的符合分割就是数组了。
在数据库中一般用 1,2,3,4 这种形式存储数组型数据。在查询时使用 find_in_set查找,代码如下:
select * from user where find_in_set(id,"1,2")
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); } }
如对本文有疑问, 点击进行留言回复!!
VScode中的react自动补全标签代码及黄色or红色警告
关于React处理input的方法和多个input共用一个方法(不用jQuery)
网友评论