浏览器请求和Ajax请求之间有什么区别?

时间:2014-01-09 07:16:35

标签: ajax jsf

我正在使用JSF 1.2版本的JSF应用程序。我们知道JSF 1.2不支持ajax。在我的应用程序中,我需要使用值更改侦听器。但我没有得到预期的结果。我被建议使用ajax标签来获得更好的值变化监听器的结果。我已经看到值变化监听器也在ajax标签中工作(在JSF 2.X版本中)。

我想知道正常表单请求和ajax请求中发生了什么(在浏览器后面)。请以两个案例为例解释我。

1 个答案:

答案 0 :(得分:2)

根据您的服务器行为,AJAX请求可能是浏览器请求。但主要的区别是当标题请求在HTTP标题的bahlf上执行时。像谷歌Chrome一样表明他们的标题请求为:

X-请求-随着:XMLHttpRequest的 每个浏览器都有自己的头请求格式,以不同的方式发送,但主要依赖是客户端。

但是浏览器会在window.location.href =“index.html”中发出常规请求,它会清除当前窗口并将服务器响应加载到窗口中。

在使用ajax处理请求时,当前窗口/文档不受影响,javascript代码可以检查请求的结果并对这些结果执行它想要的操作(将HTML动态插入页面,解析JSON并使用它页面逻辑,解析XML等...)。它取决于您在格式中处理的响应类型。 “在服务器的新阶段,更常见的是使用GET进行AJAX调用。这是因为当使用XMLHttpRequest浏览器时,将POST实现为两个步骤(首先发送头部然后再发送数据)。这意味着GET请求更具响应性 - 在AJAX环境中需要的东西!因为“Ajax”请求受到相同的源策略的约束,所以当使用GET而不是POST时,安全风险有限。使用GET从服务器“获取”信息,例如加载JavaScript file(AJAX速记函数$ .getScript()可用于执行此操作)或加载JSON文件(AJAX速记函数$ .getJSON()可用于执行此操作)“。 防爆。 jQuery AJAX默认使用GET的函数:

    $.get(), $.getScript(), $.getJSON(), .load()

  $.ajax({
     url: 'getTwitterFollowers.php',
     type: 'GET',
     data: 'twitterUsername=jquery4u',
     success: function(data) {
     //called when successful
     $('#ajaxphp-results').html(data);
     },
     error: function(e) {
     //called when there is an error
     //console.log(e.message);
 }
});