ajax contenttype

技术支持:赢科 $.ajax 中的contentType类型 前言 今天在搞项目的时候遇到一个问题, $.ajax 设置数据类型 applicaiton/json 之后,服务器端(express)就拿不到数据,遂解决后将问题以及问题原因整理下来。 A pre-request callback function that can be used to modify the jqXHR (in jQuery 1.4.x, XMLHTTPRequest) object before it is sent. If not, jQuery will automatically make intelligent judgments based on HTTP package MIME information In jquery’s ajax, the default value of 【結論】・processDataで、dataをクエリ文字列に変換せずに送信するか設定出来る・contentTypeで、content-typeヘッダを変換せず送信するか設定出来る・データが変換されてしまうと、正常に通信が完了しない為、 上記二つをfalseに指定して、変換を止める 【目次】 きっかけ そもそもAjaxと… jQuery 将自动替换 ? 该方法是 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。, 默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。, 发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。, 默认值: true,dataType 为 script 和 jsonp 时默认为 false。设置为 false 将不缓存此页面。, 默认值: "application/x-www-form-urlencoded"。发送信息至服务器时内容编码类型。, 默认值适合大多数情况。如果你明确地传递了一个 content-type 给 $.ajax() 那么它必定会发送给服务器(即使没有数据要发送)。, 这个对象用于设置 Ajax 相关回调函数的上下文。也就是说,让回调函数内 this 指向这个对象(如果不设定这个参数,那么 this 就指向调用本次 AJAX 请求时传递的 options 参数)。比如指定一个 DOM 元素作为 context 参数,这样就设置了 success 回调函数的上下文为这个 DOM 元素。, 发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。, 给 Ajax 返回的原始数据的进行预处理的函数。提供 data 和 type 两个参数:data 是 Ajax 返回的原始数据,type 是调用 jQuery.ajax 时提供的 dataType 参数。函数返回的值将由 jQuery 进一步处理。. 预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值: 有以下三个参数:XMLHttpRequest 对象、错误信息、(可选)捕获的异常对象。, 如果发生了错误,错误信息(第二个参数)除了得到 null 之外,还可能是 "timeout", "error", "notmodified" 和 "parsererror"。, 是否触发全局 AJAX 事件。默认值: true。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的 Ajax 事件。, 仅在服务器数据改变时获取新数据。默认值: false。使用 HTTP 包 Last-Modified 头信息判断。在 jQuery 1.4 中,它也会检查服务器指定的 'etag' 来确定数据没有被修改过。, 在一个 jsonp 请求中重写回调函数的名字。这个值用来替代在 "callback=?" 这种 GET 或 POST 请求中 URL 参数里的 "callback" 部分,比如 {jsonp:'onJsonPLoad'} 会导致将 "onJsonPLoad=?" 添加 contentType:“application/json“之后,向后台发送数据的格式必须为json字符串, 不添加 contentType:“application/json“的时候可以向后台发送json对象形式, 另外,当向后台传递复杂json的时候,同样需要添加 contentType:“application/json“,然后将数据转化为字符串. 在這個號稱 web 2.0 的時代,寫網站,尤其是還用到了大量的 JavaScript,如果與使用者的互動還沒有用到 Ajax 技術的話,似乎是一件很神奇的事,至於 Ajax 是什麼東西?想瞭解 在 cnodejs.org 论坛中有一个问题,让我也很奇怪,说是 $.ajax 设置数据类型 applicaiton/json之后,服务器端(express)就拿不到数据,好奇之下,就去翻了翻资料,发现了一个自己也没有注意到的事。, $.ajax contentType 和 dataType , contentType 主要设置你发送给服务器的格式,dataType设置你收到服务器数据的格式。, 在http 请求中,get 和 post 是最常用的。在 jquery 的 ajax 中, contentType都是默认的值:application/x-www-form-urlencoded,这种格式的特点就是,name/value 成为一组,每组之间用 & 联接,而 name与value 则是使用 = 连接。如: wwwh.baidu.com/q?key=fdsa&lang=zh 这是get , 而 post 请求则是使用请求体,参数不在 url 中,在请求体中的参数表现形式也是: key=fdsa&lang=zh的形式。, 键值对这样组织在一般的情况下是没有什么问题的,这里说的一般是,不带嵌套类型JSON,也就是 简单的JSON,形如这样:, 但是在一些复杂的情况下就有问题了。 例如在 ajax 中你要传一个复杂的 json 对像,也就说是对象嵌数组,数组中包括对象,兄果你这样传:, 这个复杂对象, application/x-www-form-urlencoded 这种形式是没有办法将复杂的 JSON 组织成键值对形式(当然也有方案这点可以参考 ) ,你传进去可以发送请求,但是服务端收到数据为空, 因为 ajax 没有办法知道怎样处理这个数据。, 聪明的程序员发现 http 还可以自定义数据类型,于是就定义一种叫 application/json 的类型。这种类型是 text , 我们 ajax 的复杂JSON数据,用 JSON.stringify序列化后,然后发送,在服务器端接到然后用 JSON.parse 进行还原就行了,这样就能处理复杂的对象了。, 这样你就可以发送复杂JSON的对象了。像现在的 restclient 都是这样处理的。. 发现 http 还可以自定义数据类型,于是就定义一种叫 application/json 的类型。这种类型是 text , 我们 ajax 的复杂JSON数据,用 JSON.stringify序列化后,然后发送,在服务器端接到然后用 JSON.parse 进行还原就行了,这样就能处理复杂的对象了。, “application/json“的作用: 定义和用法 ajax() 方法通过 HTTP 请求加载远程数据。 该方法是 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活 蒙ICP备06004630号, "html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。, "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载), "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" $.ajax 中的contentType 在 cnodejs.org 论坛中有一个 问题 ,让我也很奇怪,说是 $.ajax 设置数据类型 applicaiton/json 之后,服务器端(express)就拿不到数据,好奇之下,就去翻了翻资料,发现了一个自己也没有注意到的事。 The jqXHR and settings objects are passed as arguments. 这篇文章主要介绍了$.ajax中contentType: “application/json” 的用法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。 传给服务器。, 为 jsonp 请求指定一个回调函数名。这个值将用来取代 jQuery 自动生成的随机函数名。这主要用来让 jQuery 生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存 GET 请求的时候,指定这个回调函数名。, 默认值: true。默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。, 只有当请求时 dataType 为 "jsonp" 或 "script",并且 type 是 "GET" 才会用于强制修改 charset。通常只在本地和远程的内容编码不同时使用。, 参数:由服务器返回,并根据 dataType 参数进行处理后的数据;描述状态的字符串。, 如果你想要用传统的方式来序列化数据,那么就设置为 true。请参考工具分类下面的 jQuery.param 方法。, 默认值: "GET")。请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。, 需要返回一个 XMLHttpRequest 对象。默认在 IE 下是 ActiveXObject 而其他情况下是 XMLHttpRequest 。用于重写或者提供一个增强的 XMLHttpRequest 对象。这个参数在 jQuery 1.3 以前不可用。, 如果要处理 $.ajax() 得到的数据,则需要使用回调函数:beforeSend、error、dataFilter、success、complete。, 在请求出错时调用。传入 XMLHttpRequest 对象,描述错误类型的字符串以及一个异常对象(如果有的话), 在请求成功之后调用。传入返回的数据以及 "dataType" 参数的值。并且必须返回新的数据(可能是处理过的)传递给 success 回调函数。, 当请求完成之后调用这个函数,无论成功或失败。传入 XMLHttpRequest 对象,以及一个包含成功或错误代码的字符串。, $.ajax() 函数依赖服务器提供的信息来处理返回的数据。如果服务器报告说返回的数据是 XML,那么返回的结果就可以用普通的 XML 方法或者 jQuery 的选择器来遍历。如果见得到其他类型,比如 HTML,则数据就以文本形式来对待。, 通过 dataType 选项还可以指定其他不同数据处理方式。除了单纯的 XML,还可以指定 html、json、jsonp、script 或者 text。, 其中,text 和 xml 类型返回的数据不会经过处理。数据仅仅简单的将 XMLHttpRequest 的 responseText 或 responseHTML 属性传递给 success 回调函数。, 注意:我们必须确保网页服务器报告的 MIME 类型与我们选择的 dataType 所匹配。比如说,XML的话,服务器端就必须声明 text/xml 或者 application/xml 来获得一致的结果。, 如果指定为 html 类型,任何内嵌的 JavaScript 都会在 HTML 作为一个字符串返回之前执行。类似地,指定 script 类型的话,也会先执行服务器端生成 JavaScript,然后再把脚本作为一个文本数据返回。, 如果指定为 json 类型,则会把获取到的数据作为一个 JavaScript 对象来解析,并且把构建好的对象作为结果返回。为了实现这个目的,它首先尝试使用 JSON.parse()。如果浏览器不支持,则使用一个函数来构建。, JSON 数据是一种能很方便通过 JavaScript 解析的结构化数据。如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用 jsonp 类型。使用这种类型的话,会创建一个查询字符串参数 callback=?

2 Weeks Or 2 Week, Houses For Rent In Liverpool, Ny, Huawei P6 Price Philippines, Jquery Change Select Option Value, Procedimiento Sinonimo, Average Salary Bahrain, Unbox Therapy Case, Nick Mccabe Guitar, Foreach Javascript, Cash, Inc Unblocked, Pantech Website, Transformados Significado Biblico, Storm Players 2015, Fashion Photographer Job Profile, Asus Rog Strix Geforce Rtx 2080 Ti Advanced Edition, Maids Head Hotel Afternoon Tea, Powercolor Rx 5700 Xt Liquid Devil, Titan Rtx Vs 2080 Ti Sli, Patric Carroll, Cuanto Es Una Década En Años, Best Places To See Wildlife In Central America, 20x3 Press Ad Size, Tours By Locals Promo Code 2020, Chris And Olivia Toxic, Port Kembla Gps Fishing Spots, Restaurants In Southport Nc, Javascript Get Grandparent Node, Michonne 'death, Canvas Addeventlistener Mousemove, Fashion Inspired Tattoos, Large Wall Mounted Corner Shelf, Belarus Weather, Playa Varadero, Blackberry Passport Sqw100-1 Flash File, Chicago Crime Blotter, Kitchen Boss Sous Vide Cooker, Orad Y Velad En Todo Tiempo, Romy Lanfranchi, Lightspeed Restaurant Pos Reviews, American Chopper Netflix, Why Is Hydropower Good For The Environment, Asus Turbo Geforce Rtx2070 Super Evo 8gb, Diez Minutos Analisis, Dazed Magazine Korea, Brest Fortress, Things To Do In Nashville 2020, Average Water Bill Richmond Hill, Since I've Been Loving You Bass Tab, Film Vocabulary Worksheet Pdf, Conrad Bangkok Map, Teenage Heartthrob 2019, Beastie Boys Book Online, Titanic Mardan Palace Antalya, Sand Dollar Restaurant Menu, Sermon Outline Template, Société Anonyme Définition, Eltiempo Eshttps Www Google Es Gws_rd Ssl, Steve Buscemi Movies And Tv Shows, Anastasia Animation Style, Limeburners Boat Ramp Geelong, George Strickland Married To Jackie Bange, Language Abbreviations 2 Letters, The Barbarian Game, El Espacio Colombia, Boardwalk Empire Season 5 Episode 8 Recap, Words To Describe Music, Hp Veer 2018, Can You Have More Than 4 People In A Hotel Room, Animal Behavior Degree Near Me, Fa Full Form In School, Foodsaver® Fully Automated Vacuum Sealer Ffs006,