jsonp跨域获取百度联想词的方法分析

这里是“jsonp跨域获取百度联想词的方法分析”的完整攻略。

什么是jsonp跨域?

因为同源策略的限制,浏览器不能直接访问非同源的资源。但是某些情况下我们需要跨域请求数据。jsonp跨域是一种能够解决这个问题的方法。

jsonp跨域的原理是利用script标签不受同源策略的限制的特性,以动态创建script标签来访问非同源数据。网站请求一个跨域的JS或JSONP资源,将要请求的回调函数名字写到url的查询字符串中,非同源的服务器返回一个JavaScript脚本或JSONP,并且在响应头中设置回调函数名为预期的函数名称。然后浏览器会把这个脚本或JSONP载入到DOM中,此时执行载入的脚本会直接调用请求url中指定的回调函数,然后将服务器返回的数据作为参数传递给回调函数。

JSONP基于script标签,因此必须是get请求。

如何使用JSONP获取百度联想词?

以获取百度搜索联想词为例:

var input = document.getElementById("input");
input.addEventListener("input", function() {
    var value = input.value.trim();
    if (value === "") {
        return;
    }
    var script = document.createElement("script");
    script.src = "https://www.baidu.com/su?wd=" + encodeURIComponent(value) + "&cb=callback";
    document.head.appendChild(script);
});
function callback(response) {
    console.log(response.s);
}

上述代码中,我们首先获取输入框中的文本,然后根据这个文本创建一个script标签,添加到页面head里。我们把想要查询的值作为url的查询字符串传递给远程服务器,并在url中指定回调函数的名字为“callback”。服务器返回JSONP,其中包含了“callback(response)”这个回调函数,浏览器把这个函数载入到DOM中并执行。这样就可以通过回调函数获取到联想词了。

接下来我们再看一个例子。

比如这里有一个不支持CORS的Api地址:https://api.apiopen.top/getJoke?page=1&count=2&type=video。

我们可以通过JSONP获取到这个Api的数据:

function getJoke(response) {
    console.log(response.result);
}
var script = document.createElement("script");
script.src = "https://api.apiopen.top/getJoke?page=1&count=2&type=video&callback=getJoke";
document.head.appendChild(script);

这段代码中,我们同样动态创建script标签,并指定url包含了想要获取的Api地址和回调函数名称。注意:这里的回调函数名称必须和前端定义的函数名称一致。需要注意的是,当访问的Api返回的不是JSONP格式的数据时,依然会遵循同源策略,jsonp无法有效获取需要的数据。

以上是JSONP跨域获取百度联想词的方法分析,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jsonp跨域获取百度联想词的方法分析 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 聊聊Controller中RequestMapping的作用

    聊聊Controller中RequestMapping的作用 1. 什么是RequestMapping RequestMapping是Spring MVC中的一个注解,用于将HTTP请求映射到Controller的处理方法上。通过RequestMapping注解,我们可以指定请求的URL、请求方法、请求参数等信息,从而实现请求的路由和处理。 2. Reque…

    Java 2023年5月18日
    00
  • Bootstrap Table从服务器加载数据进行显示的实现方法

    接下来我将为您提供Bootstrap Table从服务器加载数据进行显示的实现方法的完整攻略。 什么是Bootstrap Table? Bootstrap Table是一个非常方便的jQuery插件,可以把表格数据便捷地展示成可排序、可分页、可编辑等功能的表格。Bootstrap Table是基于Bootstrap构建的,它的特点是轻量、易用、响应式、美观。…

    Java 2023年6月15日
    00
  • Java性能分析工具的作用是什么?

    Java性能分析工具的作用 Java性能分析工具是用来检测Java程序中的性能问题并找出优化方法的工具。Java程序中的性能问题可能包括了CPU占用率高、内存泄漏、线程阻塞等等。 Java程序中可能存在很多潜在的性能问题,但是代码很长、复杂、分散等原因让我们很难快速找出问题所在。使用性能分析工具可以帮助我们在尽可能短的时间内找到问题所在,使我们更快速地进行优…

    Java 2023年5月11日
    00
  • Java 实现模拟用户登录的示例代码

    下面是关于Java实现模拟用户登录的示例代码的详细攻略: 一、了解模拟登录的概念 模拟用户登录是指通过程序代码来模拟用户在网页上输入用户名和密码的过程,实现自动登录。 二、实现模拟登录的步骤 获取登录页面表单的URL和提交表单的URL。 构造POST请求,并设置请求头信息。 设置登录参数,将登录参数封装到请求体中,并发送POST请求。 解析响应报文,提取需要…

    Java 2023年5月18日
    00
  • java环境中的JDK、JVM、JRE详细介绍

    JDK、JVM、JRE介绍 在学习Java编程语言时,经常会听到JDK、JVM、JRE这几个概念。那么,这些概念的具体含义是什么呢? JDK(Java Development Kit):Java开发工具包。JDK是Java开发的核心组件,包含了Java编译器、Java运行环境、Java类库等一系列组件。 JRE(Java Runtime Environmen…

    Java 2023年5月24日
    00
  • 网站负载能力和访问速度优化的常用技术总结

    网站负载能力和访问速度优化的常用技术总结 作为一个网站的作者,不仅需要设计出美观、易用的网站界面,还需要考虑到网站的负载能力与访问速度问题。下面是一些在优化网站负载能力和访问速度方面常用技术的总结。 1. 网站架构设计 在网站架构设计上,需要考虑到网站的扩展性和容错性。可以采用以下技术来优化网站负载能力: 负载均衡:使用负载均衡技术可以将请求分配到多台服务器…

    Java 2023年6月15日
    00
  • Java中如何使用Response重定向

    在JavaWeb中,可以使用Response对象的sendRedirect()方法进行重定向操作。该方法可以让服务器重定向到别的页面,实现页面跳转的功能。 下面是在Java中如何使用Response重定向的完整攻略: 1. 导入相关的包和类库 在使用重定向功能之前,需要先导入一些需要的包和类库。 import java.io.IOException; imp…

    Java 2023年5月26日
    00
  • 解决springboot整合cxf启动报错,原因是版本问题

    确认版本兼容性 在整合 Spring Boot 和 CXF 的过程中,经常会遇到版本兼容性问题,此时需要确认 Spring Boot 和 CXF 的版本兼容性是否一致。 建议使用 Maven 进行管理,使用 Maven 的 Dependency Management 协调版本。在 pom.xml 中添加 Spring Boot Starter Parent …

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部