如何用原生js发送jsonp请求

如何用原生js发送jsonp请求,第1张

//    引入进去

<script>

function ajax(options) {

  options = options || {};

  optionstype = (optionstype || "GET")toUpperCase();

  optionsdataType = optionsdataType || 'json';

  optionsasync = optionsasync || true;

  optionstimeout=optionstimeout||8000;//超时处理,默认8s

  var params = getParams(optionsdata);

  var timeoutFlag=null;

  var xhr;

  var that=this;

  if (windowXML>

Jquery ajax 想在客户端跨域必须使用jsonp(还可以使用js方式)。你的dataType:"jsonp",没有问题,但看你的url就不像一个jsonp的链接,jsonp的url通常是以结束的。这里有一篇关于跨域访问的文章,不知对你是否有帮助。>

其实对于C#调用json-rpc并不点便宜,一般情况下如果是C#调用,可以考虑使用wcf等rpc技术。

对于json/xml等rpc,在C#调用时,应该遵从以下两个原则:

远程>

对本地流(二进制,文本——json/xml,文本——jsonp等)进行反序列化,得到相应的调用。

严格来说,这种情况其实不能称之rpc的,rpc是远程调用,指的调用远程方法并返回(不返回)相应的应答,而json/jsonp则是将执行结果以流的方式返回,而这个恰好可以序列化成本地对象,严格来说,json/jsonp/xml实际上是让浏览器调用的,浏览器本身是javascript的宿主,可以很轻易地反序列json或直接执行jsonp方法。

也就是说,浏览器通信使用json/jsonp的这种方案,目的是跨终端。而C#只能出现在页面后端,如果让后端去调用业务层逻辑的话,不如直接使用wcf等rpc。使用json/jsonp则是需要自定义序列化的,对于将来的维护等存在一定的问题。

如果把网页也看作rpc的话,json/jsonp可以算做rpc的,事实上狭义的rpc就是远程调用,是在业务层上远程集中封装。还有是一定的区别的。

题主是否想询问“webserver不能下载xml是怎么回事”?跨域安全问题,Web服务器权限问题。

1、 跨域安全问题: 由于XML文件存储于其他域名下,浏览器安全策略将会阻止从非同源网站下载XML文件导致的webserver不能下载xml。此时需要使用CORS或JSONP等跨域解决方案,或者将XML文件放在同一域名下。

2、 Web服务器权限问题: 缺少读取XML文件的权限或者XML文件的所有权被设置为其他用户导致的webserver不能下载xml。这时需要对XML文件的权限进行正确配置,确保访问者具有读取文件的权限。

1、同源策略

同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性。这个策略可以追溯到 Netscape Navigator 20。

Mozilla 认为两个页面拥有相同的源,如果它们的协议、端口(如果指明了的话)和主机名都相同。下表给出了相对>

首先要明白ajax的基本格式,参考下面的内容,可以发现,success是请求成功后服务器返回的数据,接收只需要把回调函数的值处理就可以了,如:

response:即为服务器返回的数据

success: function(response){

        consolelog(response);

}

如果response的个试试{"id":"123","name":"jghdream"}

取值的时候可以这样做:

var id  = responseid;

var name = responsename;

是ajax的一些参数:

$ajax({ 

    type:'post',

    url:'/testajaxphp',

    dataType:'json',

    data:{uid:uid,rands:Mathrandom()},

    success: function(){

        alert('ajax return success');

}});

url,类型:String,默认值: 当前页地址。发送请求的地址

data, 类型:String,发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'

dataType,类型:String,预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 >

"xml": 返回 XML 文档,可用 jQuery 处理。

"html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。

"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)

"json": 返回 JSON 数据 。

"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurlcallback=" jQuery 将自动替换 为正确的函数名,以执行回调函数。

"text": 返回纯文本字符串

success,当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。

以上就是关于如何用原生js发送jsonp请求全部的内容,包括:如何用原生js发送jsonp请求、jquery ajax 怎样跨域获取 json 数据、Jquery ajax 请求跨域获取json数据,数据可以获得,但json解析的时候报错,请问有什么方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9515403.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存