我仍然对Ajax技术感到困惑。我仍然无法回答我的这个问题,因为我仍在努力掌握这项技术。
关于与服务器发布数据。在普通的非ajax web应用程序中,我通常在执行POST命令时执行PRG(Post-Redirect-Get)模式。我了解到,这将阻止双重提交问题,或者当用户尝试刷新页面或在浏览器上执行某些后退事务时。
在Ajax中,你没有执行重定向,因为这会破坏ajax的目的,因为这就是我所说的教程和书籍所说的
在Jquery,我执行时
$(document).ready(function(){
$("#myForm").submit(function(){
$.post("test.htm", function(data){
alert("Successfully save data");
}, "json");
//prevent page refresh
return false;
});
});
并且用户执行,刷新(F5)或用户执行后退和前进浏览器事务。 我不是有双重提交问题的风险吗?浏览器是否会重新加载我的点击事件。
很抱歉,如果这听起来对其他人来说太愚蠢了,但我只是想澄清一下像我这样的新手的想法。
答案 0 :(得分:3)
这取决于您放置该代码的位置,如果该代码位于按钮或其他内容的单击事件处理程序上,则重新加载页面将不会重新触发该单击。如果您只是完全按照页面(或$(document).ready函数)删除该代码,那么,是的,重新加载页面将重新提交该请求。
由于ajax是由用户操作触发的,因此除非用户执行两次该操作,否则双重提交不是问题。由于您无论如何都在处理javascript中的所有内容,因此在执行该操作一次之后,很容易删除该操作 - 或用户点击的按钮。
这有意义吗?希望有所帮助。
答案 1 :(得分:0)
通常情况下,该帖子会在javascript中发生,而不是在页面刷新中自动发生(除非代码每次都会处理它) - 例如它会作为另一个事件的一部分进行处理,例如“点击”或输入表格上的字段等。
现在,关于如何处理重复数据的帖子,如果重复数据的发布无效,则由服务器端代码逻辑构造决定。
请记住,ajax通常不是页面往返的一部分,但特别是为了避免这种情况 - 例如,您可以进行部分保存,而不需要刷新页面。