Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >使用YQL解决跨域请求json转jsonp问题

使用YQL解决跨域请求json转jsonp问题

作者头像
全栈若城
发布于 2024-02-29 10:16:29
发布于 2024-02-29 10:16:29
13600
代码可运行
举报
文章被收录于专栏:若城技术专栏若城技术专栏
运行总次数:0
代码可运行

一、跨域报错

首先,是跨域请求的问题,jQuery默认不支持跨域请求,报错如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
index.html:1 XMLHttpRequest cannot load http://www.weather.com.cn/data/sk/101280601.html. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access

这个问题很快的到了解决:  1.通过给ajax添加crossDomain:true属性指定跨域  2.将数据格式(dataType)指定为jsonp ,其实指定了这个默认就会开启跨域了,不用进行1操作

二、返回格式报错

这个问题的主要原因在于jQuery ajax要求请求数据类型和返回数据类型是一致的。

因为网站返回的数据类型是json,这跟我们指定的数据交互格式jsonp不一致,在调用时可以看到网络已经返回数据,但是$.ajax并不能以jsonp格式解析数据,在控制台报了如下错误:

这个问题就有点难度了,请求格式不是jsonp,直接不让发送数据,而返回数据又固定为json,真是巨坑啊。

折腾了半天,最后解决方案如下:  使用雅虎提供的YQL代理将数据转换,并且支持网上绝大多数的数据格式,我们只需要按照它指定的格式提交地址即可。  具体代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//目标请求url
var target="http://www.weather.com.cn/data/sk/101280601.html";
//ajax请求
    $.ajax({    
            //雅虎代理url
            url: 'http://query.yahooapis.com/v1/public/yql',    
            //指定数据格式
            dataType: 'jsonp',  
            //雅虎代理要求的数据格式
            data: {    
                q: "select * from json where url=\'" + target+ "'",    
                //代理返回格式
                format: "json"    
            },    
            success: function (data) {  
                //在控制台输出,页面按F12查看,  
                console.log(data);
            }    
        });
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
五万字 | 深入理解Linux内存管理
作者简介: 程磊,一线码农,在某手机公司担任系统开发工程师,日常喜欢研究内核基本原理。 1.1 内存管理的意义 1.2 原始内存管理 1.3 分段内存管理 1.4 分页内存管理 1.5 内存管理的目标 1.6 Linux内存管理体系 2.1 物理内存节点 2.2 物理内存区域 2.3 物理内存页面 2.4 物理内存模型 2.5 三级区划关系 3.1 Buddy System 3.1.1 伙伴系统的内存来源 3.1.2 伙伴系统的管理数据结构 3.1.3 伙伴系统的算法逻辑 3.1.4 伙伴系统的接口 3.1
刘盼
2022/08/26
4K0
五万字 | 深入理解Linux内存管理
HugePages(大内存页)实现完全解析
在《一文读懂 HugePages的原理》一文中介绍了 HugePages(大内存页)的原理和使用,现在我们来分析一下 Linux 内核是怎么实现 HugePages 分配的。
用户7686797
2021/05/11
3.1K0
HugePages(大内存页)实现完全解析
一文聊透 Linux 缺页异常的处理 —— 图解 Page Faults
在前面两篇介绍 mmap 的文章中,笔者分别从原理角度以及源码实现角度带着大家深入到内核世界深度揭秘了 mmap 内存映射的本质。从整个 mmap 映射的过程可以看出,内核只是在进程的虚拟地址空间中寻找出一段空闲的虚拟内存区域 vma 然后分配给本次映射而已。
bin的技术小屋
2023/12/21
3.9K0
一文聊透 Linux 缺页异常的处理 —— 图解 Page Faults
【内存管理】页表映射基础知识
大家在看内核代码时会经常看的以上术语,但在ARM的芯片手册中并没有用到这些术语,而是使用L1,L2,L3页表这种术语。
嵌入式与Linux那些事
2024/06/11
4670
【内存管理】页表映射基础知识
alloc_page分配内存空间--Linux内存管理(十七)
在内核初始化完成之后, 内存管理的责任就由伙伴系统来承担. 伙伴系统基于一种相对简单然而令人吃惊的强大算法.
233333
2018/12/28
3.2K0
Linux进程的内存管理之缺页异常
通过《Linux进程的内存管理之malloc和mmap》我们知道,这两个函数只是建立了进程的vma,但还没有建立虚拟地址和物理地址的映射关系。
刘盼
2021/04/13
2.7K1
Linux进程的内存管理之缺页异常
探秘malloc是如何申请内存的
我们都清楚malloc申请的内存不是立刻就建立虚拟地址和物理地址的映射的,当int *p = malloc(100*1024)执行这条指令之后,只是在用户空间给程序开辟一段100K左右的大小,然后就返回这段空间的首地址给程序员。
DragonKingZhu
2021/12/07
2.4K1
探秘malloc是如何申请内存的
Linux分页机制之分页机制的实现详解--Linux内存管理(八)
前面我们提到Linux内核仅使用了较少的分段机制,但是却对分页机制的依赖性很强,其使用一种适合32位和64位结构的通用分页模型,该模型使用四级分页机制,即
233333
2018/12/19
3.6K0
Linux内存管理
谈到内存管理,最先想到的就是分段和分页机制。计算机刚出现的时候,并没有这些,刚开始是直接使用的物理地址,也就是代码中操作的地址是可以直接和物理地址对应上的,可是后来随着多进程调度的需求,以及有限的物理内存,于是人们就开始做规定,比如对于一块内存,某个范围是属于内核,然后另外一个范围属于进程A,再另外一个范围属于进程B,如下图所示
一只小虾米
2023/03/19
13.9K0
Linux内存管理
Linux下访问匿名页发生的神奇“化学反应”
Linux中有后备文件支持的页称为文件页,如属于进程的代码段、数据段的页,内存回收的时候这些页面只需要做脏页的同步即可(干净的页面可以直接丢弃掉)。反之为匿名页,如进程的堆栈使用的页,内存回收的时候这些页面不能简单的丢弃掉,需要交换到交换分区或交换文件。本文中,主要分析匿名页的访问将发生哪些可能颠覆我们认知的"化学反应"。
用户7244416
2021/09/24
6260
Linux内存管理之伙伴算法
上文我们讲到快速分配和慢速分配,接下来会详细讲解这两种分配情况,我们先来看下快速分配:
刘盼
2020/07/14
2.3K0
linux内核写时复制机制源代码解读
韩传华,就职于国内一家半导体公司,主要从事linux相关系统软件开发工作,负责Soc芯片BringUp及系统软件开发,乐于分享喜欢学习,喜欢专研Linux内核源代码。
Linux阅码场
2020/09/01
4.8K0
从 Linux 内核角度探秘 JDK MappedByteBuffer
在之前的文章《一步一图带你深入剖析 JDK NIO ByteBuffer 在不同字节序下的设计与实现》 中,笔者为大家详细剖析了 JDK Buffer 的整个设计体系,从总体上来讲,JDK NIO 为每一种 Java 基本类型定义了对应的 Buffer 类(boolean 类型除外)。
bin的技术小屋
2024/03/25
2830
从 Linux 内核角度探秘 JDK MappedByteBuffer
一步一图带你深入理解 Linux 物理内存管理
在上篇文章 《深入理解 Linux 虚拟内存管理》 中,笔者分别从进程用户态和内核态的角度详细深入地为大家介绍了 Linux 内核如何对进程虚拟内存空间进行布局以及管理的相关实现。在我们深入理解了虚拟内存之后,那么何不顺带着也探秘一下物理内存的管理呢?
bin的技术小屋
2023/10/30
1.6K0
一步一图带你深入理解 Linux 物理内存管理
分析匿名页(anonymous_page)映射
接着上一次malloc(探秘malloc是如何申请内存的)的dump信息继续分析。
DragonKingZhu
2020/04/30
1.7K0
分析匿名页(anonymous_page)映射
Linux内存管理2.6 -反向映射RMAP(最终版本)
所谓反向映射是相对于从虚拟地址到物理地址的映射,反向映射是从物理页面到虚拟地址空间VMA的反向映射。
233333
2023/08/14
6300
Linux内存管理2.6 -反向映射RMAP(最终版本)
伙伴系统之伙伴系统概述--Linux内存管理(十五)
在内核初始化完成之后, 内存管理的责任就由伙伴系统来承担. 伙伴系统基于一种相对简单然而令人吃惊的强大算法.
233333
2018/12/27
3.1K0
linux内存管理源码分析memory.c上篇(基于linux1.12.13)
/* * linux/mm/memory.c * * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds */ /* * demand-loading started 01.12.91 - seems it is high on the list of * things wanted, and it should be easy to implement. - Linus */ /* * Ok, demand-loading wa
theanarkh
2019/08/21
2.7K0
伙伴系统之避免碎片--Linux内存管理(十六)
页是信息的物理单位, 分页是为了实现非连续分配, 以便解决内存碎片问题, 或者说分页是由于系统管理的需要. 段是信息的逻辑单位,它含有一组意义相对完整的信息, 分段的目的是为了更好地实现共享, 满足用户的需要.
233333
2018/12/28
3.4K0
通过fork来剖析Linux内核的内存管理和进程管理(上)
本文主要从内存管理和进程管理两个维度来窥探一下fork背后隐藏的技术细节,希望能够通过本文让大家站在一个高度去看进程创建。
刘盼
2021/03/23
2K0
推荐阅读
相关推荐
五万字 | 深入理解Linux内存管理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验