AJAX,RESTful / Rest,JSON和JSONP有什么区别?

我只是混淆了这些条款。 任何人都可以提供/解释一个例子吗?

  • Ajax – “asynchronousJavaScript和XML”。 Ajax宽松地定义了一组技术来帮助Web应用程序提供更丰富的用户体验。 屏幕的数据更新和刷新使用JavaScript和XML(或JSON或只是一个普通的http post)asynchronous完成。

  • JSON – “Javascript对象表示法”。 JSON就像xml一样可以用来描述对象,但是它更紧凑,并且具有实际的javascript的优点。 用JSON表示的对象可以转换为一个实际的对象,以便在JavaScript代码中进行操作。

  • 默认情况下,Ajax请求必须发生在请求源页面的同一个域中。 JSONP – “带填充的JSON” – 是为了允许您从不同的域请求JSON资源而创build的。 ( CORS是JSONP的一个更新,更好的select。)

  • REST – “具象状态转移”。 使用REST原则的应用程序具有Url结构和围绕资源使用的请求/响应模式。 在纯模型中,HTTP动词Get,Post,Put和Delete分别用于检索,创build,更新和删除资源。 Put和Delete通常不被使用,留下Get和Post来映射select(GET)和创build,更新和删除(POST)

Ajax,或者更合适的AJAX,代表Asynchronous Javascript And Xml。 从技术上讲,它指的是浏览器(使用XmlHttpRequest任何东西)代表当前页面上运行的某个脚本发出的任何asynchronous请求,而不pipe返回什么内容types。 它也可以用来描述构build页面/站点的某种模式,其中大部分/全部内容在页面上被dynamic地获取/更新。 当用于描述数据格式时,“ajax”通常表示“xml”。

JSON是一种数据编码格式。 该名称本身是“JavaScript Object Notation”的首字母缩写。 JSON格式的数据如下所示:

 {"key": "value1", "key2": {"number": 1, "array": [0, 1, 2]}} 

JSON数据可以通过AJAX请求获取,尽pipe在其他上下文中通常使用JSON数据作为轻量级的,可扩展的,易于parsing的数据交换格式。

JSONP仅仅是包装在callback函数中的JSON格式的数据。 “P”代表“与填充”,这是一种愚蠢的,除非你喜欢把函数调用看作“填充”。 无论如何,JSONP数据将如下所示:

 someFunction({"key": "value1", "key2": {"number": 1, "array": [0, 1, 2]}}); 

因此,JSONP实际上只是一个JavaScript片段,而不像JSON不是在JavaScript,浏览器(或其他支持JavaScript的客户端)和AJAX请求的上下文之外使用的。 使用JSONP的原因是它允许颠覆同源策略 。 如果站点Y位于与站点X不同的域上,那么源自站点X的脚本无法直接向站点Y发出请求。但是,如果站点Y的服务器可以发送JSONP格式的响应,则站点X的脚本可以添加新的<script>标记指向引用站点Y上的URL的文档,当来自站点Y的响应被加载时,它将调用脚本X在文档中定义的callback函数,从而使脚本X访问已加载的数据dynamic从站点Y.

请注意,JSONP数据不是(通常)使用XmlHttpRequest请求的。 这可以通过这种方式来完成,但需要遵守同源策略的标准注意事项,但是您将失去使JSONP首先有用的跨域魔法。

REST只是HTTP实际工作/准备使用的forms规范/描述。 如果您理解用于从服务器请求相应资源的URL的概念以及GetPost之间的区别,那么您确实知道关于REST的所有需求。

Ajax代表Asynchronous JavaScript和Xml / XhttpRequet(X依赖和改变,因为现在主要使用json。

这是一个从页面执行请求的方式,使用JavaScript到服务器,并收到一些回应。 这个响应可以是任何东西,JSON,XML,文本,HTML等…

这使页面看起来非常敏感,无需重新加载完整的页面来对其执行操作。 例如发布这个答案你的问题。 🙂

Json是一种数据格式,代表JavaScrip Object Notation。 这是一个比XML更轻的序列化格式,并且具有成为JavaScript的优势。

JsonP是与Json一起使用Ajax的下一个合理步骤。

服务器将使用JSONP在callback函数中包装Json对象进行响应。 函数的名称通过客户端传递给服务器,通常作为查询string中的参数。 P代表填充,因为服务器以函数名和对象作为参数来包围json对象。

 callback({"name":"my name"}); 

请参阅: http : //en.wikipedia.org/wiki/JSONP获取更详细的解释。