jsonp原理

借助script标签发送跨域请求,只支持get方法

客户端:client.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JSONP 客户端</title>
</head>
<body><script>function jsonp (url, params, callback) {var funcName = 'jsonp_' + Date.now() + Math.random().toString().substr(2, 5)if (typeof params === 'object') {var tempArr = []for (var key in params) {var value = params[key]tempArr.push(key + '=' + value)}params = tempArr.join('&')}var script = document.createElement('script')script.src = url + '?' + params + '&callback=' + funcNamedocument.body.appendChild(script)window[funcName] = function (data) {callback(data)delete window[funcName]document.body.removeChild(script)}}jsonp('http://localhost/jsonp/server.php', { id: 1 }, function (res) {console.log(res)})jsonp('http://localhost/jsonp/server.php', { id: 1 }, function (res) {console.log(res)})</script>
</body>
</html>

服务器:server.php

<?php
$data = array('id' => 1,'name' => 'zs'
);
if (empty($_GET['callback'])) {header('Content-Type: application/json');echo json_encode($data);exit();
}
// 如果客户端采用的是 script 标记对我发送的请求
// 一定要返回一段 JavaScript
header('Content-Type: application/javascript');
$result = json_encode($data);
$callback_name = $_GET['callback'];
echo "typeof {$callback_name} === 'function' && {$callback_name}({$result})";

 

转载于:https://www.cnblogs.com/chuanzi/p/10516927.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.net内存回收与Dispose﹐Close﹐Finalize方法

一. net的对象使用一般分为三种情况﹕ 1.创建对象 2.使用对象 3.释放对象 二.创建对象 1.创建对象实际分为两个步骤﹕变量类型宣告和初始化对象 2.变量类型宣告(declare),如﹕ FileStream fs这行代码会在当前的变量作用域空间(栈或堆)里建立一个叫做fs的变量﹐至少四个字节吧(因…

19、Qt线程(四):继承QRunnable类

一、功能说明 1、通过继承QRunnable&#xff0c;重写run的方式实现多线程 2、点击“开始”按钮启动子线程&#xff1b; 二、项目创建 1、新建Qt Widgets Application应用&#xff0c;名称为Runnable&#xff0c;基类选择QMainWindow&#xff1b; 2、MainWindow.ui中放入一…

JavaScript:学习笔记(9)——Promise对象

JavaScript:学习笔记(9)——Promise对象 引入Promise Primose是异步编程的一种解决方案&#xff0c;比传统的解决方案回调函数和事件更加合理和强大。如下面为基于回调函数的Ajax操作&#xff1a; request.onreadystatechange function () {if (request.readyState 4) {if (r…

支持java虚拟主机_为何缺乏支持Java的虚拟主机

现在很多站长们&#xff0c;都青睐于香港虚拟主机建站。现在常见的是asp和PHP的程序空间很多&#xff0c;但是Java的少之又少&#xff0c;下面小编我给大家聊一聊&#xff01;一、香港Java虚拟主机成本高使用Java程序建站&#xff0c;就必须要用支持Java程序的香港虚拟主机的了…

C#调用ORACLE存储过程返回结果集及函数

ORACLE段&#xff1a; 首先在ORACLE建立PACKAGE和PACKAGE BODY&#xff0c;将在这里面定义函数和存储过程返回结果集。 1&#xff1a;建立PACKAGE&#xff1a; CREATE OR REPLACE package SCOTT.pk_wt is type mytype is ref cursor; procedure p_wt(mycs out mytype); functio…

tab切换

(function(){var tit $("#tab a"),con $("#tcontent>div"),cur cur;tit.mousemove(function(){var index tit.index(this);$(this).addClass(cur).siblings().removeClass(cur);con.eq(index).show().siblings().hide();}); })();原生js的tab切换 v…

组件传参

props on emit自定义方法 ref slot 事件总线 vuex (详细等有空写&#xff0c;先记着) es6新特性转载于:https://www.cnblogs.com/mokani/p/10520714.html

cocos2dx java 调用lua_cocos2dx之C++调用Lua

1&#xff0e;引入头文件#include "cocos2d.h"#include "CCLuaEngine.h"USING_NS_CC;using namespace std;extern "C"{#include "lua.h"#include "lualib.h"#include "lauxlib.h"}2导入Lua文件如果是cocos2dx的Lu…

Mysql 监控小脚本

MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB公司开发&#xff0c;目前属于Oracle公司。Mysql是最流行的关系型数据库管理系统&#xff0c;在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System&#xff1a;关系数据库管理系统)应用软件之一…

93号涨0.86元售6.2元/升 20日油价正式上调

93号涨0.86元售6.2元/升 20日油价正式上调 据悉&#xff0c;自6月20日起汽油、柴油价格每吨提高1000元&#xff0c;航空煤油价格每吨提高1500元。 上调后全国汽油、柴油平均零售价分别为&#xff1a;97号汽油6.6元/升&#xff0c;93号汽油6.2元/升&#xff0c;90号汽油5.8元/升…

eclipse 新建java无scr_解决eclipse中没有js代码提示的问题

自学js&#xff0c;发现eclipse中不管js文件、html文件、jsp文件没有都没js代码的提示&#xff0c;对于js代码也不报错&#xff0c;有时候就因为单词敲错却查了很久没查出来&#xff0c;很烦很难受。在网上找了很多方法&#xff0c;都没有解决&#xff0c;特别是有个在javascri…

C# 互通操作 (二)基础知识1

[DllImport("user32.dll", EntryPoint "MessageBox")] public static extern int DebugWin(int hwnd, string content, string lpcaption, int wType); 讲解下参数的含义EntryPoint 是指向Dll中的一个方法当设定了EntryPoint的指向后 自己定义的方法名就不…

python 细枝末节

1. print 自动换行 看区别 >>> for i in range(4): ... print i ... 0 1 2 3 >>> for i in range(4): ... print i, ... 0 1 2 3 第一个自动回车&#xff1b;第二个没有自动回车&#xff0c;空格隔开。 结论&#xff1a;print会在行尾自动加回车。…

美女MVP专访

博客园专访:中国最美丽的MVP请大家在专访页面中发表评论。制作花絮&#xff1a;在测试专访页面时&#xff0c;不小心发布到了新闻频道&#xff0c;立即引来了园友的热情评论。 推荐小组&#xff1a;转载于:https://www.cnblogs.com/cmt/archive/2008/07/14/1241994.html

鲁班学院java高级架构师_鲁班学院三期java架构师

架构&#xff0c;又名软件架构&#xff0c;是有关软件整体结构与组件的抽象描述&#xff0c;用于指导大型软件系统各个方面的设计。架构描述语言(ADL)用于描述软件的体系架构。现在已有多种架构描述语言&#xff0c;如Wright(由卡内基梅隆大学开发)&#xff0c;Acme(由卡内基梅…

java jconsole rmi 连接不上

今天在虚拟机开放远程jconsole连接&#xff0c;设置了jmxrote的参数 JAVA_OPTIONS"${JAVA_OPTIONS} -Dcom.sun.management.jmxremote"JAVA_OPTIONS"${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.port9000"JAVA_OPTIONS"${JAVA_OPTIONS} -Dcom.su…

ASP 判断Session变量是否存在的4种方法

如果去读取没有初始化的Session变量&#xff0c;将得到Empty值(空值)。所以可以利用该值来判断Session变量是否已经初始化。加入我们要判断名为sesName的变量是否已经建立&#xff0c;我们可以用以下4种方法&#xff1a;1 If Session("sesName") "" Then …

SRE(Simple Rule Engine) Document

What is a rule engine?什么是规则引擎&#xff1f;A Rule Engine is a software system that contains rules on behalf of another system. Many different kinds of rules can be contained in a rules engine: business, legal, company policy, navigation, computationa…

字符串匹配,KMP算法

KMP的详解见&#xff1a;https://segmentfault.com/a/1190000008575379 主要难点在于Next数组的理解&#xff0c;KMP是不需要回溯的匹配算法。 1 #include<iostream>2 #include<string>3 #include<vector>4 #define MAXSIZE 1005 using namespace std;6 /*为…

{}企业如何才能实现多方位网络营销

现在很多企业都在进行网络营销,但是网络营销取得显着效果的并不多.其中有各种原因.但是很多在网络营销方式取得显着效果的企业却都有个共同的特点,尝试了多种营销方式做多方位的网络营销.在现今网络平台多样化,网络营销竞争激烈的形式下,单一的营销模式确实无法取得好的效果,多…