首页 科普 资讯 养生 问答 找医院 相关问答
首页> 问答

2个回答 - jQuery ajax success返回值类型与什么有关

发布网友 发布时间:2024-10-24 16:52

我来回答

3个回答

热心网友 时间:2024-11-02 02:32

1、ajax请求数据的类型dataType这可以设置,也就是说你想要得到什么类型的数据就设置成什么,你设置的是json类型,所以返回的数据必须是json的,不然会出错

2、dataType可以不设置,会根据返回的数据格式自动判断,也就是说,你服务器返回什么格式的信息,在js里就用什么方法处理就行了

-------------------------- 下面是参考文档 ---------------------

参考ajax api文档:http://www.w3school.com.cn/jquery/ajax_ajax.asp

dataType
类型:String

预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:

•"xml": 返回 XML 文档,可用 jQuery 处理。
•"html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
•"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
•"json": 返回 JSON 数据 。
•"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
•"text": 返回纯文本字符串追问

大神,不好意思 没有看懂你说的。您指的服务器返回的格式是ServletActionContext.getResponse().getWriter().write(abc);?

如果abc是json字符串那么回调函数就会接受字符串类型的数据;

如果abc是Array那么回调函数就会接受到数组类型的数据?可以这样理解吗

追答嗯,是的,就是这个意思,在不设置dataType的情况下,返回什么类型,就按照什么类型处理就好

热心网友 时间:2024-11-02 02:32

和你的使用有关啊。

jQuery.ajax(url,[settings])
概述
通过 HTTP 请求加载远程数据。
jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 
对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。
最简单的情况下,$.ajax()可以不带任何参数直接使用。
注意,所有的选项都可以通过$.ajaxSetup()函数来全局设置。
回调函数
如果要处理$.ajax()得到的数据,则需要使用回调函数。beforeSend、error、dataFilter、success、complete。
beforeSend 在发送请求之前调用,并且传入一个XMLHttpRequest作为参数。
error 在请求出错时调用。传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果有的话)
dataFilter 
在请求成功之后调用。传入返回的数据以及"dataType"参数的值。并且必须返回新的数据(可能是处理过的)传递给success回调函数。
success 当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。
complete 当请求完成之后调用这个函数,无论成功或失败。传入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=? 
,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。如果要指定回调函数的参数名来取代默认的callback,可以通过设置$.ajax()的jsonp参数。
注意,JSONP是JSON格式的扩展。他要求一些服务器端的代码来检测并处理查询字符串参数。更多信息可以参阅 最初的文章。
如果指定了script或者jsonp类型,那么当从服务器接收到数据时,实际上是用了<script>标签而不是XMLHttpRequest对象。这种情况下,$.ajax()不再返回一个XMLHttpRequest对象,并且也不会传递事件处理函数,比如beforeSend。
发送数据到服务器
默认情况下,Ajax请求使用GET方法。如果要使用POST方法,可以设定type参数值。这个选项也会影响data选项中的内容如何发送到服务器。
data选项既可以包含一个查询字符串,比如 key1=value1&key2=value2 ,也可以是一个映射,比如 {key1: 
'value1', key2: 'value2'} 
。如果使用了后者的形式,则数据再发送器会被转换成查询字符串。这个处理过程也可以通过设置processData选项为false来回避。如果我们希望发送一个XML对象给服务器时,这种处理可能并不合适。并且在这种情况下,我们也应当改变contentType选项的值,用其他合适的MIME类型来取代默认的 
application/x-www-form-urlencoded 。
高级选项
global选项用于阻止响应注册的回调函数,比如.ajaxSend,或者ajaxError,以及类似的方法。这在有些时候很有用,比如发送的请求非常频繁且简短的时候,就可以在ajaxSend里禁用这个。更多关于这些方法的详细信息,请参阅下面的内容。
如果服务器需要HTTP认证,可以使用用户名和密码可以通过username和password选项来设置。
Ajax请求是限时的,所以错误警告被捕获并处理后,可以用来提升用户体验。请求超时这个参数通常就保留其默认值,要不就通过jQuery.ajaxSetup来全局设定,很少为特定的请求重新设置timeout选项。
默认情况下,请求总会被发出去,但浏览器有可能从他的缓存中调取数据。要禁止使用缓存的结果,可以设置cache参数为false。如果希望判断数据自从上次请求后没有更改过就报告出错的话,可以设置ifModified为true。
scriptCharset允许给<script>标签的请求设定一个特定的字符集,用于script或者jsonp类似的数据。当脚本和页面字符集不同时,这特别好用。
Ajax的第一个字母是asynchronous的开头字母,这意味着所有的操作都是并行的,完成的顺序没有前后关系。$.ajax()的async参数总是设置成true,这标志着在请求开始后,其他代码依然能够执行。强烈不建议把这个选项设置成false,这意味着所有的请求都不再是异步的了,这也会导致浏览器被锁死。
$.ajax函数返回他创建的XMLHttpRequest对象。通常jQuery只在内部处理并创建这个对象,但用户也可以通过xhr选项来传递一个自己创建的xhr对象。返回的对象通常已经被丢弃了,但依然提供一个底层接口来观察和操控请求。比如说,调用对象上的.abort()可以在请求完成前挂起请求。
参数
url,[settings]ObjectV1.5
url:一个用来包含发送请求的URL字符串。
settings:AJAX 请求设置。所有选项都是可选的。
V1.0settings:选项
acceptsMap
默认: 取决于数据类型。
内容类型发送请求头,告诉服务器什么样的响应会接受返回。如果accepts设置需要修改,推荐在$.ajaxSetup()方法中做一次。
asyncBoolean
(默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 
false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
beforeSend(XHR)Function
发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。这是一个 Ajax 
事件。如果返回false可以取消本次ajax请求。
function (XMLHttpRequest) {
    this; // 调用本次AJAX请求时传递的options参数
}

cacheBoolean
(默认: true,dataType为script和jsonp时默认为false) jQuery 1.2 新功能,设置为 false 
将不缓存此页面。
complete(XHR, TS)Function
请求完成后回调函数 (请求成功或失败之后均调用)。参数: XMLHttpRequest 对象和一个描述成功请求类型的字符串。 Ajax 事件。
function (XMLHttpRequest, textStatus) {
    this; // 调用本次AJAX请求时传递的options参数
}

contentsMapV1.5
一个以"{字符串:正则表达式}"配对的对象,用来确定jQuery将如何解析响应,给定其内容类型。
contentTypeString
(默认: "application/x-www-form-urlencoded") 
发送信息至服务器时内容编码类型。默认值适合大多数情况。如果你明确地传递了一个content-type给 $.ajax() 
那么他必定会发送给服务器(即使没有数据要发送)
contextObject
这个对象用于设置Ajax相关回调函数的上下文。也就是说,让回调函数内this指向这个对象(如果不设定这个参数,那么this就指向调用本次AJAX请求时传递的options参数)。比如指定一个DOM元素作为context参数,这样就设置了success回调函数的上下文为这个DOM元素。就像这样:
$.ajax({ url: "test.html", context: document.body, success: function(){
    $(this).addClass("done");
}});

convertersmapV1.5
默认: {"* text": window.String, "text html": true, "text json": 
jQuery.parseJSON, "text xml": jQuery.parseXML}
一个数据类型对数据类型转换器的对象。每个转换器的值是一个函数,返回响应的转化值
crossDomainmapV1.5
默认: 同域请求为false
跨域请求为true如果你想强制跨域请求(如JSONP形式)同一域,设置crossDomain为true。这使得例如,服务器端重定向到另一个域
dataObject,String
发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 
Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 
"&foo=bar1&foo=bar2"。
dataFilterFunction
给Ajax返回的原始数据的进行预处理的函数。提供data和type两个参数:data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。函数返回的值将由jQuery进一步处理。
function (data, type) {
    // 对Ajax返回的原始数据进行预处理
    return data  // 返回处理后的数据
}

dataTypeString
预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML 
MIME类型就被识别为XML。在1.4中,JSON就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:
"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。
"script": 返回纯文本 JavaScript 
代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
"json": 返回 JSON 数据 。
"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
"text": 返回纯文本字符串

errorFunction
(默认: 自动判断 (xml 或 html)) 请求失败时调用此函数。有以下三个参数:XMLHttpRequest 
对象、错误信息、(可选)捕获的异常对象。如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能是"timeout", "error", 
"notmodified" 和 "parsererror"。Ajax 事件。
function (XMLHttpRequest, textStatus, errorThrown) {
    // 通常 textStatus 和 errorThrown 之中
    // 只有一个会包含信息
    this; // 调用本次AJAX请求时传递的options参数
}

globalBoolean
(默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 
可用于控制不同的 Ajax 
事件。
headersmapV1.5
Default: {}
一个额外的"{键:值}"对映射到请求一起发送。此设置被设置之前beforeSend函数被调用;因此,消息头中的值设置可以在覆盖beforeSend函数范围内的任何设置。
ifModifiedBoolean
(默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。在jQuery 
1.4中,他也会检查服务器指定的'etag'来确定数据没有被修改过。
isLocalmapV1.5.1
默认: 取决于当前的位置协议
允许当前环境被认定为“本地”,(如文件系统),即使jQuery默认情况下不会承认它。以下协议目前公认为本地:file, *-extension, and 
widget。如果isLocal设置需要修改,建议在$.ajaxSetup()方法中这样做一次。
jsonpString
在一个jsonp请求中重写回调函数的名字。这个值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,比如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。
jsonpCallbackString
为jsonp请求指定一个回调函数名。这个值将用来取代jQuery自动生成的随机函数名。这主要用来让jQuery生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存GET请求的时候,指定这个回调函数名。
mimeTypeStringV1.5.1
一个mime类型用来覆盖XHR的 MIME类型。
passwordString
用于响应HTTP访问认证请求的密码
processDataBoolean
(默认: true) 
默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 
"application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
scriptCharsetString
只有当请求时dataType为"jsonp"或"script",并且type是"GET"才会用于强制修改charset。通常只在本地和远程的内容编码不同时使用。
statusCodemapV1.5
默认: {}
一组数值的HTTP代码和函数对象,当响应时调用了相应的代码。例如,如果响应状态是404,将触发以下警报:
$.ajax({
  statusCode: {404: function() {
    alert('page not found');
  }
});

success(data, textStatus, 
jqXHR)Function,Array
请求成功后的回调函数。参数:由服务器返回,并根据dataType参数进行处理后的数据;描述状态的字符串。还有 jqXHR(在jQuery 
1.4.x的中,XMLHttpRequest) 对象 。在jQuery 1.5, 成功设置可以接受一个函数数组。每个函数将被依次调用。 Ajax 事件。
function (data, textStatus) {
    // data 可能是 xmlDoc, jsonObj, html, text, 等等...
    this; // 调用本次AJAX请求时传递的options参数
}

traditionalBoolean
如果你想要用传统的方式来序列化数据,那么就设置为true。请参考工具分类下面的jQuery.param 方法。
timeoutNumber
设置请求超时时间(毫秒)。此设置将覆盖全局设置。
typeString
(默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 
也可以使用,但仅部分浏览器支持。
urlString
(默认: 当前页地址) 发送请求的地址。
usernameString
用于响应HTTP访问认证请求的用户名
xhrFunction
需要返回一个XMLHttpRequest 对象。默认在IE下是ActiveXObject 而其他情况下是XMLHttpRequest 
。用于重写或者提供一个增强的XMLHttpRequest 对象。这个参数在jQuery 1.3以前不可用。
xhrFieldsmapV1.5
一对“文件名-文件值”在本机设置XHR对象。例如,如果需要的话,你可以用它来设置withCredentials为true的跨域请求。
示例
描述:
加载并执行一个 JS 文件。
jQuery 代码:
$.ajax({
  type: "GET",
  url: "test.js",
  dataType: "script"
});
描述:
保存数据到服务器,成功时显示信息。
jQuery 代码:
$.ajax({
   type: "POST",
   url: "some.php",
   data: "name=John&location=Boston",
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
});
描述:
装入一个 HTML 网页最新版本。
jQuery 代码:
$.ajax({
  url: "test.html",
  cache: false,
  success: function(html){
    $("#results").append(html);
  }
});
描述:
同步加载数据。发送请求时锁住浏览器。需要锁定用户交互操作时使用同步方式。
jQuery 代码:
 var html = $.ajax({
  url: "some.php",
  async: false
 }).responseText;
描述:
发送 XML 数据至服务器。设置 processData 选项为 false,防止自动转换数据格式。
jQuery 代码:
 var xmlDocument = [create xml document];
 $.ajax({
   url: "page.php",
   processData: false,
   data: xmlDocument,
   success: handleResponse
 });

热心网友 时间:2024-11-02 02:32

$.ajax({
type : function(jsonStr) {
alert(jsonStr),
dataType ;json",
success : '.jsp”,
url:http://www.baidu.com;
}
})

这个回调函数中的参数 jsonStr是json格式的,请求后服务器端返回的数据会根据这个值解析后;,以执行回调函数,所以返回的数据必须是json的.cn/jquery/ajax_ajax,不然会出错
一个车队两次共运煤108吨,第二次比第一次多运了12吨。第一次运了多少... ...运走余下的一半少3吨,还剩下25吨.这吨煤原来多少吨? ...第一次运走总数的3分之1,第二次比第一次少运12吨,这时还剩54吨,原来... ...煤,第一次运走总数的1/3,第2次比第一次少运12吨,这时还剩下54吨,原... 有一堆煤,第一次运走总数的三分之一,第2次比第一次少运12吨,这是还剩... 王者荣耀夏侯惇好用吗?容易上手吗? 王者荣耀夏侯惇有用吗介绍_王者荣耀夏侯惇有用吗是什么 王者荣耀是买露娜好还是夏侯惇好 自考为什么那么坑还有那么多人考 自考没用为什么那么多人考 为什么都说自考难考却还有那么多人报考 去美国旅游是自己去好,还是报旅游团比较好 MES系统如何与其他企业系统集成? scada和mes区别 棋魂故事梗概 宝马冷却液漏了维修多少钱 防冻液漏了修一下大概需要多少钱 怎么去掉59tou首页 郁闷 360 金山 注册表都式了还是改不回来 有这么厉... 天天飞车铁杆粉会掉吗 天天飞车铁杆粉活动奖励是什么 有数字油画的,淇淇DIY油画吧,在那里? 喜欢画数字油画的人多吗?我想把自己的照片做成数字油画可以吗?需要多 ... 小王在计算1.89除以一个小数时,由于粗心,把商的小数点向右移动了一位... ...听说现在的数字油画销的还可以,,! 武汉哪有数字油画加盟的... ...由于粗心,把除数的小数点向左错点一位,结果得204,除 ...计算题时,由于粗心,错把除数的小数点向右点了一位,结果得2 ...30.6除以一个数的除法时,由于粗心,把除数的小数点向左点错了一位... ...在计算3.69除以一个数时,由于粗心,把除数的小数点向左多移了一位... 碳酸氢钠和氢氧化钙反应的方程式是什么呀 烟草税率是百分之多少烟草税率 什么情况消费税要退税 s38赛季几号开始几号结束的 盗窃案退赃流程有哪些 【会计论文】珠宝贷款公司筹资风险管理问题与对策分析——以TD公司... 汉堡怎么翻译?用字母拼 我是北方人,在广东那边打过工,广东不是都是老板,要不就是收租,但是我... 城乡医疗保险属于什么保险 曲靖市农村居民最低生活保障制度暂行办法第六章 监督和管理 曲靖市农村居民最低生活保障制度暂行办法第三章 保障标准和保障资金_百 ... 曲靖市农村居民最低生活保障制度暂行办法第二章 保障对象 云南省曲靖市十月份办低保一月份拿到卡了怎么上面没有钱呢 会泽低保6月11日怎么还设有打款 我想在重庆一中去读书,请问费用是多少?分数线是多少?请回答的详细点_百... 重庆一中初升高分数线大约多少?巴川中学考上的几率大约在前几百名... 2019重庆中考录取分数线 苏新皓的中考成绩是多少? 重庆一中中考录取分数线? 重庆中考675分可以上哪个高中 快手上买衣服流程 苹果ipad微信怎么换漂亮字体 电烙铁能清理猪毛吗 1万元一年利息是多少? 代办化妆品卫生许可证所需资料有哪些 水基灭火器压力不足怎么办 车载灭火器粘条怎么用 高压细水雾灭火机 灭火器压力过低怎么办 车用灭火器交警查吗 中药颗粒剂 兽用小柴胡散中药颗粒剂多少钱一袋 手机4内核与8内核的差别很大吗?市面上咋又标榜所谓真8内核 一般情况下,核心内存的值越大越好,还是越小越好。 二建B证怎么考试报名? 奇迹私服法师加点怎么加我的总点数是 64027 ai教程实线变虚线ai里面怎么实线变虚线 现实C#比较流行,为什么这么多人用c#? 为什么感觉用c#的比用c++的人少很多? 为什么有人说.net(c#)恶心 ai中如何将线段变成填充ai中如何将线段变成填充图案 dnf巫女什么装备卢克 ai正方形怎么嵌入另一个正方形ai如何把正方形填满斜线 27313谢谢! 顺便再问个问题, 菠萝用英语怎么说 msxml3.dll 错误 '800c0005' 系统错误: -2146697211。 /init.asp,行... 锡纸和松香哪个好? 海钓鲈鱼要如何打锅 ...书,提到亥姆霍兹的最少运动原则,问大神们,这个原则具体是什么... 脑卒中急救的方式 平板电视常识每日新知 有线电视机顶盒 移动机顶盒机顶盒怎么避免出现假死 月经期减肥瘦了12斤怎么回事 月经期减肥为什么不瘦 ...小三只是把小三当成婚姻的调剂品吗没有真爱的吗? 我做别人的小三好累,五一假期他回到家里连给我打过电话都没有,现在觉... 发电玻璃什么股票 柜门铰链安装步骤技巧:从选材到安装 我不小心把别人的手机号码加入黑名单怎么恢复 初夏堂草本祛痘精华凝露使用方法 为什么说松红梅太难养 ...做N'EX方便还是京城方便?怎么换乘(坐什么方向到什么方向)?谢谢_百... 请问我从成田机场去五反田站 是做N'EX 还是京城方便? QQ华夏城战后无法登陆 QQ华夏不能登录(进入不了更新页面),可以正常上网,其他游戏也没问题...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com