热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php跨域json请求,php跨域请求解决方案

本文目录一览:1、PHP跨域获取json数据的方法,PHP里面有没有类似ajax的函数?

本文目录一览:


  • 1、PHP跨域获取json数据的方法,PHP里面有没有类似ajax的函数?


  • 2、jsonp跨域请求范例,求PHP版本的jsonp范例。


  • 3、php怎么配合$getjson跨域callback=


  • 4、thinkphp 跨域获取 xml 转 json


  • 5、PHP如何实现跨域传递参数

PHP跨域获取json数据的方法,PHP里面有没有类似ajax的函数?

php中的文件读写函数基本上都可直接支持url,也就是说你可以像操作本地文件一样直接操作其他网站的文件(当然只是读取,写入是不可能的),而且没有任何跨域限制,比如下面一行代码就可直接读取百度首页的html代码:

$bd=file_get_contents("");

如果想获取json数据,只需把网址换一下即可。当然,还需要做一下格式转换,php本身就有专门的json转换函数:

$json=json_decode(file_get_contents("网址"),true);

这样一看,是不是比前端的ajax还要简单百倍?!

jsonp跨域请求范例,求PHP版本的jsonp范例。

jquery代码:

$.getJSON(";callback=?",{id: 10, name: "test"}, function(data){

alert(data.msg);

});

服务端返回:

jsonp1310628945031({"rs":true,"msg":"u60a8u7684u4fe1u606fu63d0u4ea4u6210u529fuff01"})

PHP代码:

$result['rs'] = false;

$result['msg'] = '您的信息提交成功!';

$json = new Services_JSON();

header('Content-Type: application/json');

echo $_GET['callback'].'('.$json-encode($result).')';

php怎么配合$getjson跨域callback=

type : "post",

url : "ajax.php",

dataType : "jsonp",

jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)

jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名

success : function(json){

alert('success');

},

error:function(){

alert('fail');

}

thinkphp 跨域获取 xml 转 json

最简单的转换:

function simplest_xml_to_array($xmlstring) {

return json_decode(json_encode((array) simplexml_load_string($xmlstring)), true);

}

完整点的:

function xml2array($contents, $get_attributes=1, $priority = 'tag') {

if(!$contents) return array();

if(!function_exists('xml_parser_create')) {

//print "'xml_parser_create()' function not found!";

return array();

}

//Get the XML parser of PHP - PHP must have this module for the parser to work

$parser = xml_parser_create('');

xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8"); #

xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);

xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);

xml_parse_into_struct($parser, trim($contents), $xml_values);

xml_parser_free($parser);

if(!$xml_values) return;//Hmm...

//Initializations

$xml_array = array();

$parents = array();

$opened_tags = array();

$arr = array();

$current = $xml_array; //Refference

//Go through the tags.

$repeated_tag_index = array();//Multiple tags with same name will be turned into an array

foreach($xml_values as $data) {

unset($attributes,$value);//Remove existing values, or there will be trouble

//This command will extract these variables into the foreach scope

// tag(string), type(string), level(int), attributes(array).

extract($data);//We could use the array by itself, but this cooler.

$result = array();

$attributes_data = array();

if(isset($value)) {

if($priority == 'tag') $result = $value;

else $result['value'] = $value; //Put the value in a assoc array if we are in the 'Attribute' mode

}

//Set the attributes too.

if(isset($attributes) and $get_attributes) {

foreach($attributes as $attr = $val) {

if($priority == 'tag') $attributes_data[$attr] = $val;

else $result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr'

}

}

//See tag status and do the needed.

if($type == "open") {//The starting of the tag 'tag'

$parent[$level-1] = $current;

if(!is_array($current) or (!in_array($tag, array_keys($current)))) { //Insert New tag

$current[$tag] = $result;

if($attributes_data) $current[$tag. '_attr'] = $attributes_data;

$repeated_tag_index[$tag.'_'.$level] = 1;

$current = $current[$tag];

} else { //There was another element with the same tag name

if(isset($current[$tag][0])) {//If there is a 0th element it is already an array

$current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;

$repeated_tag_index[$tag.'_'.$level]++;

} else {//This section will make the value an array if multiple tags with the same name appear together

$current[$tag] = array($current[$tag],$result);//This will combine the existing item and the new item together to make an array

$repeated_tag_index[$tag.'_'.$level] = 2;

if(isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well

$current[$tag]['0_attr'] = $current[$tag.'_attr'];

unset($current[$tag.'_attr']);

}

}

$last_item_index = $repeated_tag_index[$tag.'_'.$level]-1;

$current = $current[$tag][$last_item_index];

}

} elseif($type == "complete") { //Tags that ends in 1 line 'tag /'

//See if the key is already taken.

if(!isset($current[$tag])) { //New Key

$current[$tag] = $result;

$repeated_tag_index[$tag.'_'.$level] = 1;

if($priority == 'tag' and $attributes_data) $current[$tag. '_attr'] = $attributes_data;

} else { //If taken, put all things inside a list(array)

if(isset($current[$tag][0]) and is_array($current[$tag])) {//If it is already an array...

// ...push the new element into that array.

$current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;

if($priority == 'tag' and $get_attributes and $attributes_data) {

$current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data;

}

$repeated_tag_index[$tag.'_'.$level]++;

} else { //If it is not an array...

$current[$tag] = array($current[$tag],$result); //...Make it an array using using the existing value and the new value

$repeated_tag_index[$tag.'_'.$level] = 1;

if($priority == 'tag' and $get_attributes) {

if(isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well

$current[$tag]['0_attr'] = $current[$tag.'_attr'];

unset($current[$tag.'_attr']);

}

if($attributes_data) {

$current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data;

}

}

$repeated_tag_index[$tag.'_'.$level]++; //0 and 1 index is already taken

}

}

} elseif($type == 'close') { //End of tag '/tag'

$current = $parent[$level-1];

}

}

return($xml_array);

}

?

函数描述及例子

$arr = xml2array(file_get_contents("tools.xml"),1,'attribute');

PHP如何实现跨域传递参数

通常是用json,你可以用php的函数json_encode(),转换为json格式,然后输出进行传递


推荐阅读
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
  • 查询单个functionquery(id){$.ajax({url:smallproductServlet,async:true,type:POST,data:{typ ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • 本文介绍了使用FormData对象上传文件同时附带其他参数的方法。通过创建一个表单,将文件和参数添加到FormData对象中,然后使用ajax发送POST请求进行文件上传。在发送请求时,需要设置processData为false,告诉jquery不要处理发送的数据;同时设置contentType为false,告诉jquery不要设置content-Type请求头。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • ASP.NET&Spring.NET&NHibernate最佳实践(五)——第3章人事子系统(2)
    3.4.人事子系统服务层(Service)部门服务接口(IDeptService.cs)usingSystem;usingGuushuuse.SalaryPrj. ... [详细]
  • Python入门后,想要从事自由职业可以做哪方面工作?1.爬虫很多人入门Python的必修课之一就是web开发和爬虫。但是这两项想要赚钱的话 ... [详细]
author-avatar
三年零七U个月的感情
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有