File tree Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -407,4 +407,35 @@ web worker使用postMessage()来和调用它的程序通讯,调用者通过onm
407
407
- 回调函数也会检查xhr对象的status属性。这个属性和HTTP状态码对应,比如200(OK)或者是404(Not found)。我们只对状态码200感兴趣,而将其它所有的都报为错误(为了简化示例,否则需要检查其它不代表出错的状态码)。
408
408
- 上面的代码会在每次创建XHR对象时检查一遍支持情况。你可以使用前面提到过的模式(如条件初始化)来重写上面的代码,使得只需要做一次检查。
409
409
410
+ ### JSONP
411
+
412
+ JSONP(JSON with padding)是另一种发起远程请求的方式。与XHR不同,它不受浏览器同源策略的限制,所以考虑到加载第三方站点的安全影响的问题,使用它时应该很谨慎。
413
+
414
+ 一个XHR请求的返回可以是任何类型的文档:
415
+
416
+ - XML文档(过去很常用)
417
+ - HTML片段(很常用)
418
+ - JSON数据(轻量、方便)
419
+ - 简单的文本文件及其它
420
+
421
+ 使用JSONP的话,数据经常是被包裹在一个函数中的JSON,函数名称在请求的时候提供。
422
+
423
+ JSONP的请求URL通常是像这样:
424
+
425
+ http://example.org/getdata.php?callback=myHandler
426
+
427
+ getdata.php可以是任何类型的页面或者脚本。callback参数指定用来处理响应的JavaScript函数。
428
+
429
+ 这个URL会被放到一个动态生成的\< script\> 元素中,像这样:
430
+
431
+ var script = document.createElement("script");
432
+ script.src = url;
433
+ document.body.appendChild(script);
434
+
435
+ 服务器返回一些作为参数传递给回调函数的JSON数据。最终的结果实际上是页面中多了一个新的脚本,这个脚本的内容就是一个函数调用,如:
436
+
437
+ myHandler({"hello": "world"});
438
+
439
+ (译注:原文这里说得不是太明白。JSONP的返回内容如上面的代码片段,它的工作原理是在页面中动态插入一个脚本,这个脚本的内容是函数调用+JSON数据,其中要调用的函数是在页面中已经定义好的,数据以参数的形式存在。一般情况下数据由服务端动态生成,而函数由页面生成,为了使返回的脚本能调用到正确的函数,在请求的时候一般会带上callback参数以便后台动态返回处理函数的名字。)
440
+
410
441
You can’t perform that action at this time.
0 commit comments