我一直在阅读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)同步和异步.当我想到同步时,我想到必须遵循的步骤.例如,我按下一个按钮,数据被发送到服务器,我必须等待数据返回,然后我才能做其他事情.使用异步连接,我会按下按钮,数据被发送到服务器,我会在数据被发回时做我想做的事情.这是一个很好的比喻吗?
1)不.XMLHttpRequest对象正如其名称所暗示的那样 - 它启动HTTP请求.此请求可以是XML,HTML或PHP.在一天结束时,浏览器并不关心,因为在AJAX请求中,它不会解析请求 - 您必须自己完成.因此它不会自动从AJAX请求呈现HTML.
2)我不确定操作(XHR对象可能是不可变的)但可能.你需要扩展它还是操纵它?
是的,您可以更改对象的属性等.我道歉.起初我不明白你:)
3)是的.
4)这是一个很好的类比.这正是发生的事情.另一个类比是4车道高速公路是异步的,因为单向的街道是同步的.如果一辆车在4车道高速公路上发生故障,其余车辆将继续以正常速度行驶 - 但如果在单行道上发生故障,一切都会冻结.:)