GVKun编程网logo

关于jQuery.ajax()的jsonp碰上post详解(json jquery)

3

在本文中,您将会了解到关于关于jQuery.ajax()的jsonp碰上post详解的新资讯,同时我们还将为您解释jsonjquery的相关在本文中,我们将带你探索关于jQuery.ajax()的js

在本文中,您将会了解到关于关于jQuery.ajax()的jsonp碰上post详解的新资讯,同时我们还将为您解释json jquery的相关在本文中,我们将带你探索关于jQuery.ajax()的jsonp碰上post详解的奥秘,分析json jquery的特点,并给出一些关于ajax(jquery) post json 跨域访问问题、jQuery $ .ajax jsonp、jquery $.ajax jsonp、jQuery Ajax & jsonp的实用技巧。

本文目录一览:

关于jQuery.ajax()的jsonp碰上post详解(json jquery)

关于jQuery.ajax()的jsonp碰上post详解(json jquery)

前言

以前一直以为当$.ajax()的 dataType设置为jsonp时,其method(请求方法)无论怎么设置,都会变成get,直到前两天遇到了一个坑。

下面来一起看看详细的介绍:

关于跨域请求与jsonp

  • 跨域:由于受到同源策略(协议、域名、端口三者必须全部相同)的影响,ajax请求会受到限制,要突破这种限制,跨域便产生了。跨域的解决方案有多种,这里不展开阐述,只是针对GET请求中的jsonp跨域解决方案做一下说明。
  • jsonp,本质上jsonp不是xhr异步请求,就是请求了一个js文件,因此在chrome的network面板中的xhr标签下看不到jsonp的跨域请求,在js标签下能看到。就是利用script标签中src不受同源策略的限制,前端定义了回调函数,请求的js脚本中获取数据,并执行前端的回调函数,因此前后端需要统一定义下回调函数名。
  • $.ajax中jsonp,$.ajax对jsonp进行了封装看起来像是ajax请求。由于jsonp是针对get请求的跨域解决,因此之前的经验告诉我,即使type设置了post,在jsonp的时候,也会自动转换成get,直到有一天踩了个坑。翻看$.ajax模块的源码发现,只有去手动设置crossDomain为true,或者实际上是跨域,才会设置为get。否则还是填入的type

结论:

手动设置crossDomain为true,或者真的是跨域,才会修改type为GET,否则还是传入的type参数

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对小编的支持。

ajax(jquery) post json 跨域访问问题

ajax(jquery) post json 跨域访问问题

因为后端需要json或raw格式数据,按照网上的例子,发送的总是form-data数据

设置contentType:"application/json; charset=utf-8"后发现发送的不是POST请求,而是OPTIONS请求

最后还是看官网文档:http://api.jquery.com/jQuery.ajax/有一句

<html>
<head>
<scriptsrc="jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.ajax({
type:"POST",url:"http://121.45.108.14:8000/weiapi/login",async:true,data:JSON.stringify({
phone:"18625531123",password:"74c665982bb15059e63"
}),contentType:"text/plain;charset=utf-8",dataType:"json",success:function(data){
}
});
});
});
</script>
</head>
<button>向页面发送HTTPPOST请求,并获得返回的结果</button>
</html>


服务器端需要添加头Access-Control-Allow-Origin:* 表示允许跨域访问

jQuery $ .ajax jsonp

jQuery $ .ajax jsonp

$.ajax({    type : "GET",    dataType : "jsonp",    url : ''/'',    data : {}    success: function(obj){    }});

如何使用$ .ajax dataType:jsonp跨域发布数据?

答案1

小编典典

使用简单的jsonp是不可能的。读 这个

jquery $.ajax jsonp

jquery $.ajax jsonp

$.ajax({
    type : "GET",dataType : "jsonp",url : '/',data : {}
    success: function(obj){

    }
});

我如何使用$ .ajax dataType:jsonp跨域发布数据?

解决方法

简单的jsonp是不可能的。阅读 this

jQuery Ajax & jsonp

jQuery Ajax & jsonp

1.Ajax与jsonp

(1)ajax技术的目的是让JavaScript发送HTTP请求,与后台通信,获取数据和信息。Ajax技术的原理是实例化xmlhttp对象,使用此对象与后台通信。Ajax通信的过程不会影响后续JavaScript的执行,从而实现异步。

(2)同步和异步
同步:等待结果返回在执行
异步:不管结果继续执行

(3)局部刷新和无刷新
Ajax可以实现局部刷新,也叫无刷新,无刷新指的是整个页面不刷新,只是局部刷新,Ajax可以自己发送HTTP请求,不用通过浏览器的地址栏,所以页面整个不会刷新,Ajax获取到后台数据,更新页面数据的部分,就做到了页面局部刷新

(4)同源策略
Ajax请求的页面或资源只能是同一个域下面的资源,不能是其他域的资源,这是在设计Ajax时基于安全的考虑。
特征报错提示:

(5)Ajax使用:

$.ajax使用方法:

url 请求地址

type 请求方式,默认是GET,常用的还有POST

dataType 设置返回的数据格式,常用的是json,也可以设置为
HTML

data 设置发送给服务器的数据

success 设置请求成功后的回调函数

error设置请求失败后的回调函数

async设置是否异步,默认值是true,表示异步

$.ajax({
url:''data.json'',
type:''get'',
dataType:''json''
})
.done(function(dat){
$(''#username'').html(dat.name);
$(''#userage'').html(dat.age);

        })
        .fail(function(){
            alert(''服务器超时!'');
        })

2.json

json是JavaScript object notation 的首字母缩写,单词的意思是JavaScript对象表示法,这里说的json指的是类似于JavaScript对象的一种数据格式,目前这种数据格式比较流行,逐渐替代了传统的xml数据格式

(1)JavaScript自定义对象

(2)json格式的数据
与json对象不同的是,json数据格式的属性名称和字符串值需要用双引号引起来,用单引号或者不用引号会导致读取数据错误。

json的另一个数据格式是数组,和JavaScript中的数组字面量相同

3.jsonp

Ajax只能请求同一个域下的数据或资源,有时候需要跨域请求数据,就需要用到jsonp技术,jsonp可以跨域请求数据,它的原理主要是利用<script>标签可以跨域链接资源的特性。jsonp和Ajax原理完全不一样,不过jQuery将它们封装成同一个函数

遗憾:实验不成功

我们今天的关于关于jQuery.ajax()的jsonp碰上post详解json jquery的分享就到这里,谢谢您的阅读,如果想了解更多关于ajax(jquery) post json 跨域访问问题、jQuery $ .ajax jsonp、jquery $.ajax jsonp、jQuery Ajax & jsonp的相关信息,可以在本站进行搜索。

本文标签: