当前位置: 首页 > 面试题库 >

为什么不需要“ jQuery.parseJSON”?

阎卓
2023-03-14
问题内容

我正在用查询执行ajax请求,想知道为什么我的响应已经是JS对象。

如果我做一个

var obj = jQuery.parseJSON(response);

‘obj’为null,但是我可以将’response’用作js对象数组。

这不是真正的问题,但是我想了解这种行为。

谢谢


问题答案:

当您进行AJAX调用并指定dataType
JSON时,就会发生这种情况jQuery会在响应中为您调用jQuery.parseJSON。实际上,您可以根据数据类型指定要调用的函数,如文档中所述

转换器(添加1.5)
Map默认值:{“ * text”:window.String,“ text html”:true,“ text
json”:jQuery.parseJSON,“ text xml”:jQuery.parseXML} dataType-to-
dataType转换器。每个转换器的值都是一个函数,该函数返回响应的转换值

所以如果你这样打

$.ajax({
  url: yoururl,
  dataType: "json",
  success: function(data){
    //data is already a json
  }

如果您未指定dataType,则jQuery会尝试猜测它

dataTypeString默认值:Intelligent Guess(xml,json,脚本或html)

您期望从服务器返回的数据类型。如果未指定,则jQuery将尝试根据响应的MIME类型来推断它(XML
MIME类型将产生XML,在1.4中,JSON将产生JavaScript对象,在1.4中,脚本将执行该脚本,而其他任何内容将是以字符串形式返回)。可用的类型(以及作为第一个参数传递给您的成功回调的结果)是:

“ xml”:返回可以通过jQuery处理的XML文档。
“ html”:以纯文本形式返回HTML;插入到DOM中时,将评估包含的脚本标签。“脚本”:将响应评估为JavaScript并以纯文本形式返回。
除非将高速缓存选项设置为true,否则通过在URL上 附加查询字符串参数“ = [TIMESTAMP]”来 禁用高速缓存
注意:对于远程域请求,这会将POST转换为GET。“ json”:将响应评估为JSON并返回一个JavaScript对象。在jQuery
1.4中,以严格的方式解析JSON数据。任何格式错误的JSON都会被拒绝,并引发解析错误。(有关正确的JSON格式的更多信息,请参见json.org。)
“ jsonp”:使用JSONP加载JSON块。添加一个额外的“?callback =?”
URL的末尾以指定回调。_除非将高速缓存选项设置为true,否则通过在URL上 _附加查询字符串参数“
= [TIMESTAMP]”来
禁用高速缓存
“文本”:纯文本字符串。多个以空格分隔的值:
从jQuery 1.5开始,jQuery可以将dataType从Content-
Type标头中接收到的数据类型转换为所需的数据类型。例如,如果您希望将文本响应视为XML,请对数据类型使用“文本xml”。您还可以发出JSONP请求,将其接收为文本,然后由jQuery解释为XML:“
jsonp text xml”。类似地,诸如“ jsonp
xml”之类的速记字符串将首先尝试从jsonp转换为xml,然后,尝试将jsonp转换为文本,然后再从文本转换为xml。



 类似资料:
  • 互联网是超文本标记语言(HTML)页面的集合,它们彼此链接以形成概念性信息网络。随着时间的推移,静态资源数量增加,图像等更丰富的项目开始成为Web结构的一部分。 高级服务器技术允许动态服务器页面 - 其内容基于查询生成的页面。 很快,需要拥有更多动态网页才能获得动态超文本标记语言(DHTML)。一切都归功于JavaScript。在接下来的几年中,我们看到了跨帧通信,试图避免页面重新加载,然后在帧内

  • 当前信息时代,哪里都是应用程序。这些应用程序们不仅仅是运行人们工作场所的工具 - 它们现在正在经营人们的生活。 对即时响应的需求,完美的行为和更多的功能是前所未有的。 而且,当然,人们期望应用程序在不同类型的设备上运行平稳,特别是在移动设备上。 应用程序执行的速度与它所做的一样重要。 NGINX的核心功能,例如其具有高性能HTTP和反向代理服务器的大规模可扩展事件驱动架构,访问和带宽控制以及与各种

  • 开发人员和运营工程师是两个不同的组织团队,如果发现这两个团队在错误的轨道上协作,则表明需要DevOps。以下是两个团队经常出现的一些问题: 在DevOps之前,开发和运营团队完全孤立。 测试和部署是在设计构建之后完成的独立活动。因此,他们比实际构建周期消耗更多时间。 在不使用DevOps的情况下,团队成员将大量时间花在测试,部署和设计上,而不是构建项目。 手动代码部署会导致生产中出现人为错误 编码

  • 问题内容: 这适用于Applet,Servlet,Midlet等的子类。 为什么他们不需要?如果我想创建一个从或类似的类开始,那是不好的设计,还是我将如何去做? 问题答案: 它实际上是好的设计,但并不明显,您想要执行的操作没有效果,因此有点反常。 这些类型的应用程序生活在容器中,因此,它们的切入点由这些容器必须遵守的标准确定。这些标准的设计者选择不将入口点称为主要入口点。您可以将功能放在重写的方法

  • 编辑:哎呀,毕竟安装了铬。

  • 问题内容: 我对JAX-WS进行了概述,并注意到了(和)的一些引用。 在什么情况下需要?(我认为JSR 109服务器?!) 问题答案: 是使用SUN的参考实现将Web服务作为标准存档部署在非Java EE5 Servlet容器上时所需的专有部署描述符。 Sun的RI 用作servlet上下文事件的侦听器和调度程序servlet。两者都必须在中声明。然后需要该文件为定义Web服务端点,以使其知道必须