- 先说一说URL,比如script标签里的src、link标签里的href这种他的URL后缀名可以随便写的。比如<script src="js.css"></script> 然后js.css文件里返回js代码,不是css代码,只要他返回的代码能够解析就行,URL无所谓。像src,href主要功能都是向服务器发送一次http请求,来获取相应的资源。
- 想要屏蔽一些网站,可以使用本地域名绑定,本地解析给他屏蔽掉。
- 当ajax跨域的时候,可以使用<script src=""><script>来引入文件,举个例子:我想要a.com下的ajax请求b.com下的server.php文件资源,那么用原生js代码和jquery的ajax都是不行的,不同源。那么可以使用<script="http://b.com/server.php"><script>来引入资源。这样就可以实现跨域请求。因为script标签本身具有跨域功能。
- 当用script引入资源后,如何使用服务端的数据呢?(因为这种请求回来的数据无法直接使用,虽然确实返回数据了,,在响应中看到)
(1)在服务器端使用 echo ' callback() ' ,然后在客户端定义一个callback函数来处理服务器数据,举个例子:
$str = json_encode(['name'=>'qaq','age'=>20]);// 这是服务器代码 echo "callback($str)"; //注意使用双引号
//echo的callback()会返回给客户端,在客户端就调用了这行代码,就相当于在客户端写了callback()来调用函数一样的效果
(2)客户端要定义一个和服务器端echo的同名的函数来操作服务器端数据。
<script> function callback(data){ //客户端代码 //code··· } <script>
5. 上面的是原生js跨域,接下来是jquery跨域(注意红色部分必须是问号,callback只是随便起的名字)
$.getJSON('http://b.com/server.php?callback=?',{name:'xxx',age:20},function(data){//code···});//客户端代码
上面客户端的 callback=?中的问号就是会随机生成一个字符串,这个字符串就是要使用函数的名称。
$str = json_encode(['name'=>'xxx','age'=>20]);//服务器端数据 echo $_GET['callback']."($str)"; //$_GET['callback']是一个函数名,只不过这个函数名是一个随机字符串,所以要用$_GET[]来获取函数名,这行代码就和echo "callbakc($str)";一样的效果
6.在laravel框架中,发送ajax请求后,如果服务器端想要给客户端返回数组,按理说是需要使用json_encode()转换成json格式的字符串,但是laravel底层自动帮我们完成了转换这件事,所以使用laravel框架我们就不需要手动将数组转换成json格式了。