跨域的本质-动态指定回调函数名称| 学习笔记

简介: 快速学习跨域的本质-动态指定回调函数名称。

开发者学堂课程【Ajax 前端开发入门与实战跨域的本质-动态指定回调函数名称】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/595/detail/8545


跨域的本质-动态指定回调函数名称 

 

内容介绍:

一、由前端决定回调方法名称

二、简化 script 标签

 

一、由前端决定回调方法名称

例:

创建 weather04.html:

<script type="text/javascript">

function foo(data){

console.log(data) ;

}

</script>

<script type="text/javascript"src="http://www.lisi. com/

data.php?city=shanghai"></script>

<script type="text/javascript">

window.onload = function(){

var btn = document.querySelector("#btn");

btn.onclick = function(){

var cityName = document.querySelector("#city").value;

//动态创建 script 标签,动态制定 src 属性的值

var script = document.createElement("script");

script.src="http://www.lisi.com/data.php?city="+cityName +"$Icallback=foo2" ; 

var head = document.querySelector("head" );

head.appendChild(script);

};

};

</script>

</head>

<body>

data.php 改为:

<?php

$cbName = $_ GET["callback"];

$city = $_ GET["city"];

if($city =="beijing"){

echo $cbName."('北京的天气晴')";

}else {

echo $cbName."foo('没有查询到天气信息')";

}

//echo"var str = 'haha'";

?>

后台接口会根据“&cbName”返回对应名称的方法调用。

data.php 只要能获取到“callback”这个值,就可以将这个值所对应的方法进行调用。

输入参数 beijing 浏览器输出为:

image.png

 

二、简化 script 标签

省去第一个 script 标签,改为:

<script type="text/javascript">

window.onload = function(){

var btn = document.querySelector("#btn");

btn.onclick = function(){

var cityName = document.querySelector(”#city").value;

//动态创建 script 标签,动态制定 src 属性的值

var script =document.createElement("script");

script.src="http://www.lisi.com/data.php?city="+cityName +"&callback=foo2"

window["foo2"] = function( data){

console.log(data);

}

var head= document.querySelector("head" );

head.appendChild(script);

};

};

</script>

</head>

<body> 

输入参数 beijing 浏览器输出为:

image.png

相关文章
|
4月前
接口请求内容改变的问题.
接口请求内容改变的问题.
19 0
|
4月前
sd.js 2.0封装:更加简化请求传参内容(逐步废弃、逐渐日落2024.01.02)
sd.js 2.0封装:更加简化请求传参内容(逐步废弃、逐渐日落2024.01.02)
解决传入的请求具有过多的参数,该服务器支持最多 2100 个参数
解决传入的请求具有过多的参数,该服务器支持最多 2100 个参数
|
22天前
|
JavaScript 前端开发
Vue中传递自定义参数到后端、后端获取数据(使用Map接收参数)
这篇文章讲述了如何在Vue中通过Axios二次封装传递自定义参数到后端,并展示了后端如何使用Map接收这些参数,以及如何避免参数转换错误和统一接口设计的方法。
|
9天前
|
运维 Serverless 调度
函数计算产品使用问题之怎么在HTTP触发的函数里添加或读取自定义头部
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
JavaScript API
前后端数据交互.js文件的axios的写法,想要往后端发送数据,页面注入API,await的意思是同步等待服务器数据,并返回,axios注入在其他页面,其他页面调用的时候,同步作用
前后端数据交互.js文件的axios的写法,想要往后端发送数据,页面注入API,await的意思是同步等待服务器数据,并返回,axios注入在其他页面,其他页面调用的时候,同步作用
数据交互,前后端数据请求,axios请求,对象结构的使用,E6的使用,结构赋值是什么?函数形参的obj如何,函数形参的obj就改成对象结构接收传入的数据对象
数据交互,前后端数据请求,axios请求,对象结构的使用,E6的使用,结构赋值是什么?函数形参的obj如何,函数形参的obj就改成对象结构接收传入的数据对象
|
4月前
|
网络架构
怎么定义vue-router的动态路由?怎么获取传过来的动态参数?
怎么定义vue-router的动态路由?怎么获取传过来的动态参数?
|
4月前
|
网络架构
定义vue-router的动态路由以及如何获取传过来的动态参数
定义vue-router的动态路由以及如何获取传过来的动态参数
132 1
|
4月前
|
前端开发
AJAX发送请求方法封装和请求函数底层刨析以及axios二次封装
AJAX发送请求方法封装和请求函数底层刨析以及axios二次封装