批改状态:合格
老师批语:其实作业是不合格的, 考虑到新同学的原因... 你看一下其它同学怎么写的, 如果实在是写不好的话, 发布时不要选择作业, 当成博客发布即可... 在本机做好练习是一样的... 如果当成作业,一些基本的原则还是要遵守的, 谢谢
答:
//array.find(function(currentValue, index, arr),thisValue)//currentValue 必需。当前元素//index 可选。当前元素的索引值//arr 可选。当前元素所属的数组对象//thisValue可选。 传递给函数的值一般用 "this" 值。//如果这个参数为空, "undefined" 会传递给 "this" 值//返回值: 返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回 undefined。var numbers = [4, 12, 16, 20];function checknum(num){if(num>16){return true;}}numbers.find(checknum);//20//array.findIndex(function(currentValue, index, arr), thisValue)//参数说明同上//返回值: 返回符合测试条件的第一个数组元素索引,如果没有符合条件的则返回 -1。//findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。var numbers = [4, 12, 16, 20];function checknum(num){if(num>16){return true;}}numbers.findIndex(checknum);//3//Array.from(object, mapFunction, thisValue)//object 必需,要转换为数组的对象。//mapFunction 可选,数组中每个元素要调用的函数。//thisValue 可选,映射函数(mapFunction)中的 this 对象。//from() 方法用于通过拥有 length 属性的对象或可迭代的对象来返 回一个数组。//如果对象是数组返回 true,否则返回 false。var setObj = new Set(["a", "b", "c"]);var objArr = Array.from(setObj);console.log(objArr);//集合转化成数组var myr = Array.from("PHP&js");//['P','H','P','&','j','s']//Array.of()//把一列值转化成数组const a = Array.of(2,4,6,8);Array.isArray(obj)//判断一个对象是不是数组//indexOf() 方法可返回数组中某个指定的元素位置。//array.indexOf(item,start)方法可返回数组中某个指定的元素位置。let fr=['name','age','sex','tel','email']fr.indexOf('tel',2);//3fr.indexOf('tel',4);//-1//array.reduceRight(function(total, currentValue, currentIndex, arr), initialValue)//total初始值,或者计算后的结果。initialValue初始值var numbers = [1,2,3,4,5];function getSum(total, num) {console.log(total+'---------'+num)return total - num;}numbers.reduceRight(getSum)//从后往前执行的//reverse() 方法用于颠倒数组中元素的顺序。var fruits = ["Banana", "Orange", "Apple", "Mango"];fruits.reverse();//Mango,Apple,Orange,Banana//toString()数组转化字符串var fruits = ["Banana", "Orange", "Apple", "Mango"];fruits.toString();//"Banana,Orange,Apple,Mango"//splice(开始删除的位置,删除长度(为0时是添加),替换删除长度(不为0时是添加)或添加值(删除长度(为0时是添加)))//添加let x=[1,2,3,4,5];rs=x.splice(1,0,'xx');//rs=[],x=[1,'xx',2,3,4,5]let xx=[];rs=xx.splice(1,0,'xx');//rs=[],x=['xx']//删除let y=[1,2,3,4,5];rs=y.splice(1,3);//rs=[2,3,4],y=[1,5]//修改let yy=[1,2,3,4,5];rs=yy.splice(1,3,88,99);//rs=[2,3,4],y=[1,88,99,5]
答案:
JSON.stringify()
语法:JSON.stringify(value[, replacer[, space]])
console.log(JSON.stringify(3),typeof JSON.stringify(3))//3 stringconsole.log(JSON.stringify(true),typeof JSON.stringify(true))//true stringconsole.log(JSON.stringify(null),typeof JSON.stringify(3))//null stringconsole.log(JSON.stringify('demo'),typeof JSON.stringify("demo"))//"demo" string//JSON不支持undefined//属性名称必须包含在字符串中//第二个参数:array 或function//数组:console.log(JSON.stringify({a:'10',b:'20',c:'30'},['a','b']))//{"a":"10","b":"20"}//函数:实现过滤,把要排除的结果return undefined即可//必须是undefined才行console.log(JSON.stringify({a:1,b:2,c:3,d:4,e:5,f:6,g:7,h:8,i:9},(k,v)=>{if(v>2){ return undefined;} else { return v;}}))//第三个参数是用来控制格式输出
JSON.parse()函数
JSON.parse(text[, reviver]) 方法将数据转换为 JavaScript 对象。
rs=JSON.parse('{"a":1,"b":2,"c":3}',(k,v)=>{ if(k==="") return v; else return v*2 });
答:
<button>get&post</button><p></p><script>//GET方式:const bt=document.querySelector('button');bt.onclick=function(){//创建xhr对象const xhr=new XMLHttpRequest();//xhr参数配置xhr.open("get","test.php?id=1");xhr.responsetype="json";//处理xhr相应:xhr.onload=()=>{console.log(xhr.response);let user=xhr.response.name;document.querySelector('p').innerHTML=user;}xhr.onerror=()=>{console.log(object);}//发送xhr请求xhr.send(null);}</script>
服务器端:
<?php$json=array(array("id"=>1,"name"=>"test","email"=>"shuju@qq.com"),array("id"=>2,"name"=>"wangliang","email"=>"wangliang@qq.com"));$id=$_GET['id'];echo json_encode($json[$id]);?>
结果:
POST&表单:
<form action=""><input type="email" name="email" id="email" /><input type="password" name="password" id="password" /><button>提交</button><span class="tips"></span></form><script>const form=document.querySelector('form');const tips=document.querySelector('.tips');const button=document.querySelector('button');button.onclick=function(ev){ev.preventDefault();//或者let data=new FormData(form);let data=new FormData();data.append('email',form.email.value);data.get('email');//与new FormData(form)等价//创建xhr对象const xhr=new XMLHttpRequest();//xhr参数配置xhr.open("post","test.php");xhr.responseType="json";//处理xhr相应:xhr.onload=()=>{document.querySelector('.tips').innerHTML=xhr.response.email+'-----'+xhr.response.password;console.log(xhr.response);}xhr.onerror=()=>{console.log(object);}//发送xhr请求xhr.send(new FormData(form));}</script>
服务器端:
<?phpprint_r(json_encode($_POST));?>
结果:
答:
cors:跨域资源共享
同源策略:为了请求安全,浏览器禁止通过脚本发起一个跨域的请求,只允许发起同源请求
同源:协议,主机名/域名,端口(有些浏览器允许端口不一样)
<button>跨域请求</button><p></p><script>//跨域方式一:php版本//header("Access-Control-Allow-Origin:http://hello.io");//GET方式:const bt=document.querySelector('button');bt.onclick=function(){//创建xhr对象const xhr=new XMLHttpRequest();//xhr参数配置xhr.open("get","http://word.io/cors1.php");xhr.responsetype="json";//处理xhr相应:xhr.onload()=>{console.log(xhr.response);document.querySelector('p').innerHTML=xhr.response;}xhr.onerror=()=>{console.log(object);}//发送xhr请求xhr.send(null);}</script>
get方式的跨域请求:
POST:
<button>跨域请求</button><p class="tips"></p><script>//跨域方式一:php版本//header("Access-Control-Allow-Origin:http://hello.io");//GET方式:const bt=document.querySelector('button');bt.onclick=function(){//创建xhr对象const xhr=new XMLHttpRequest();//xhr参数配置xhr.open("get","http://word.io/cors1.php");xhr.responsetype="json";//处理xhr相应:xhr.onload=()=>{document.querySelector('.tips').innerHTML=xhr.response;}xhr.onerror=()=>{console.log(object);}//发送xhr请求let form=new FormData();form.append('email','1232@php.cn');form.append('password','123456');xhr.send(form);}</script>
服务器端:
<?phpheader("Access-Control-Allow-Origin:http://hello.io");//开启跨域请求print_r($_POST);?>
结果:
jsonp:
jsonp:json with padding (将json填充进来的)
jsonp:念 json padding,把数据包含在一个函数调用中,包含两部分:回调函数+json,回调函数请求收到响应时回调的函数,可以动态设置,回调参数:作为参数传递给函数的数据,jsop是利用可以跨域标签来进行跨域操作的,一边使用的是script标签进行的,jsonp只能完成get请求
<button>jsonp</button><p></p>//json原理:<script>function getUser(data){console.log(data);let user=data.name+":"+data.email;document.querySelector("p").innerHTML=user;}const bt=document.querySelector('button');bt.onclick=function(){//1.动态生成一个跨域的script标签let script=document.createElement('script');script.src="http://word.io/cors2.php?callback=getUser";document.body.insertBefore(script,document.body.firstElementChild);}</script>
服务器端:
<?phpheader("Access-Control-Allow-Origin:http://hello.io");echo "get方式的跨域请求";?>
结果:
<?php$callback=$_GET['callback'];$data='{"name":"张三","email":"123456@qq.com"}';echo $callback.'('.$data.')';//生成回调函数和参数返回?>
结果:
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号