ajax和json跨域,本地ajax获取跨域请求

  ajax和json跨域,本地ajax获取跨域请求

  

  如何解决写爬虫IP受阻的问题?立即使用。

  【相关学习推荐:java基础教程

  1、什么是JSONP

  一般来说,位于server1.example.com的网页不能与不在server1.example.com的服务器通信,但HTML的脚本元素是个例外。利用这种脚本元素的开放策略,网页可以从其他来源获取动态生成的JSON数据,这种使用模式被称为JSONP。JSONP捕获的数据不是JSON,而是任意JavaScript,由JavaScript文字翻译器执行,而不是由JSON解析器解析。

  JSONP是解决客户端请求服务器跨域的协议,但不是正式的传输协议。该协议的一个关键点是允许用户向服务器传递一个回调参数,然后服务器在返回数据时将这个回调参数作为函数名包装JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回的数据。

  2、Ajax 请求其他域接口

  在这个项目中,我想请求另一个第一后台接口来请求数据。当呈现页面时,数据通过ajax加载,如下所示:

  $.ajax({

  网址: http://www.xxx.cn/lalala?方法=10082page=1pageSize=10 ,

  键入: GET ,

  数据类型: json ,

  超时:5000,

  content type: application/JSON;charset=utf-8 ,

  成功:功能(结果){

  alter( AAAA );

  }

  });这会导致跨域错误,如下所示:

  请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许访问源 null。响应的HTTP状态代码为500。

  这意味着不允许跨域请求,怎么办?改成jsonp就行了。我更改了数据类型字段。

  $.ajax({

  网址: http://www.xxx.cn/lalala?方法=10082page=1pageSize=10 ,

  键入: GET ,

  数据类型: jsonp ,

  超时:5000,

  content type: application/JSON;charset=utf-8 ,

  成功:功能(结果){

  alter( AAAA );

  }

  });结果:未捕获的语法错误:意外的标记!

  什么他妈的!明明请求回数据,结果还是出错。原因是ajax请求服务器,但返回的数据格式不符合jsonp的格式。jsonp格式是什么?

  回调({msg:这是JSON数据 })这是什么?谁定义的!如果你这么想,那似乎你没有仔细看第1点。JSON是一种轻量级的数据交换格式,就像xml一样。JSONP是使用JSON数据的一种方式。它不是返回JSON对象,而是包含JSON对象的javaScript脚本。但是上图是json字符串,所以是错误的。

  3、参数返回处理

  有一点你会发现,当你使用jsonp协议请求时,参数中除了你填写的参数之外,还有一个名为callback的参数,如图:

  看看这个参数是什么,因为我在请求ajax的时候没有指定jsonp参数,所以系统默认的参数叫“callback”。如果没有指定jsonpCallback参数,jquery会生成一个随机的函数名,如上图所示。

  例如,我将其配置如下:

  $.ajax({

  网址: http://www.xxx.cn/lalala?方法=10082page=1pageSize=10 ,

  键入: GET ,

  数据类型: jsonp ,

  Jsonp:callbacka ,//传递给请求处理程序或页面以获取Jsonp回调函数名称的参数名称(默认值:callback)

  Jsonp回调: Success _ JSONP Callback ,//自定义JSONP回调函数的名称,默认为jQuery自动生成的随机函数名。

  超时:5000,

  content type: application/JSON;charset=utf-8 ,

  成功:功能(结果){

  alter( AAAA );

  }

  });那么服务器也可以通过以下方法获得回调的函数名:

  代码如下:

  string callback funname=request . getparameter( callbacka );//获取success_jsonpCallback的字符串。注意:系统会区分函数名的大小写。

  然后,按照格式打包,看一看:

  string callback=request . getparameter( callback );//不指定函数名的默认回调

  Return callback ( jsonStr )是包装好的,结果真的没有给出错误。查看返回的数据,如下所示:

  4、JSONP的执行过程

  首先在客户端注册一个回调(比如 jsoncallback ),然后将回调的名称(比如jsonp1236827957501)传递给服务器。注意:服务器获取回调的值后,应该使用jsonp1236827957501(.)来包含要输出的json内容。此时,服务器生成json数据,以便客户端可以正确接收。

  然后以javascript语法的形式生成一个函数,函数的名字就是传上来的参数 jsoncallback 的值,jsonp1236827957501。

  最后,将json数据作为参数直接放入函数中,从而生成js语法文档并返回给客户端。客户端浏览器解析脚本标签并执行返回的javascript文档。此时,javascript文档数据作为参数传入客户端预定义的回调函数(success: function (json)被jquery $封装。上面例子中的ajax()方法)。

  以上就是来看看Java Ajax jsonp跨域请求的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • js把字符串转为json,json字符串转换成json对象
  • js把字符串转为json,json字符串转换成json对象,js 将json字符串转换为json对象的方法解析
  • json语法格式,json格式定义
  • json语法格式,json格式定义,Json格式详解
  • json格式数据类型,什么是JSON数据-其常见格式是什么-
  • json格式数据类型,什么是JSON数据-其常见格式是什么-,JSON 数据格式详解
  • json格式怎么写,json文件内容格式
  • json格式怎么写,json文件内容格式,json文件书写格式详解
  • json数组对象转化为json字符串,js把数组转化为json
  • json字符串转换成对象有哪几种方法,字符串转化为json的方法
  • json字符串转换成对象有哪几种方法,字符串转化为json的方法,JSON对象转化为字符串详解
  • json基础介绍与详细用法教程,json基础知识
  • json基础介绍与详细用法教程,json基础知识,JSON基础介绍与详细用法
  • json去掉反斜杠,json字符串中有反斜杠
  • json去掉反斜杠,json字符串中有反斜杠,详解json串反转义(消除反斜杠)
  • 留言与评论(共有 条评论)
       
    验证码: