我一直在阅读Ajax,并希望从stackoverflow社区看到我是否正确理解了所有内容。
因此,正常的客户端服务器交互是用户在URL中提取Web浏览器类型,并且HTTP请求被发送到服务器,从Web服务器请求页面和资源(css,pics)。 Web服务器通过HTTP响应客户端请求的页面/资源,浏览器呈现html / JavaScript以供用户查看页面。
1)那么可以肯定地说XMLHttpRequest(XHR)对象与浏览器执行相同的过程,除了你没有从服务器请求html,你的请求文本是某种格式吗?
2)XHR对象是否像常规对象一样,可以由创建对象的程序(如普通对象)操纵,但也可以通过HTTP与另一个程序(Web服务器)发送和接收数据?
3)所以在我的脑海中创建XHR时,它被加载到内存中,当我们执行request.open(“GET”,url,true)时,我们设置了一些对象参数。一旦我们执行了request.send(null),对象基本上会尝试通过HTTP“获取”URL,一旦我们从服务器获取数据,它就被放入responseText参数中。我能正确理解吗?
4)同步和异步。当我想到同步时,我想到必须遵循的步骤。例如,我按下一个按钮,数据被发送到服务器,我必须等待数据返回,然后我才能做其他事情。使用异步连接我会按下按钮,数据被发送到服务器,我会在数据被发回时做我想做的事情。这是一个很好的比喻吗?
答案 0 :(得分:8)
1)不。 XMLHttpRequest对象正如其名称所暗示的那样 - 它启动HTTP请求。此请求可以是XML,HTML或PHP。在一天结束时,浏览器并不关心,因为在AJAX请求中,它不会解析请求 - 您必须自己完成。因此它不会自动从AJAX请求中呈现HTML。
2)我不确定操作(XHR对象可能是不可变的)但可能。你需要扩展它还是操纵它?
是的,您可以更改对象的属性等。我道歉。我起初并不理解你:)
3)是的。
4)这是一个很好的类比。这正是发生的事情。另一个类比是4车道高速公路是异步的,因为单向的街道是同步的。如果一辆车在4车道高速公路上发生故障,其余车辆将继续以正常速度行驶 - 但如果在单行道上发生故障,一切都会冻结。 :)
答案 1 :(得分:1)
在这里,我给您留下了一个很好的图形,以清楚地看到同步和异步应用程序模型之间的行为差异:
(来源:adaptivepath.com)
答案 2 :(得分:0)
看起来你已经掌握了AJAX的工作原理。在您对AJAX应用程序管道的总结中,我看不出太多不同意。
然而,我会说,使用XMLHttpRequest对象,您不仅限于GET。您还可以使用POST和其他HTTP谓词。
使用异步调用注册回调函数,XMLHttpRequest对象在异步请求完成时调用您的方法。
答案 3 :(得分:0)
对我来说似乎没问题。
你的第一点虽然不完全正确,你可以使用ajax从服务器请求html,不需要像大多数示例所示的文本,json或xml。