我正在使用JSF 1.2版本的JSF应用程序。我们知道JSF 1.2不支持ajax。在我的应用程序中,我需要使用值更改侦听器。但我没有得到预期的结果。我被建议使用ajax标签来获得更好的值变化监听器的结果。我已经看到值变化监听器也在ajax标签中工作(在JSF 2.X版本中)。
我想知道正常表单请求和ajax请求中发生了什么(在浏览器后面)。请以两个案例为例解释我。
答案 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);
}
});