Javascript jQuery代码重复问题
我在jQuery中有一段代码,用于在单击链接并加载完内容后获取iFrame的内容。它是有效的,但我有一个问题,它重复-至少我认为这是它正在做的,但我不明白为什么或如何 jQuery JS:Javascript jQuery代码重复问题,javascript,jquery,iframe,Javascript,Jquery,Iframe,我在jQuery中有一段代码,用于在单击链接并加载完内容后获取iFrame的内容。它是有效的,但我有一个问题,它重复-至少我认为这是它正在做的,但我不明白为什么或如何 jQuery JS: $(".pageSaveButton").bind("click",function(){ var theID = $(this).attr("rel"); $("#fileuploadframe").load(function(){ var response = $("#fileup
$(".pageSaveButton").bind("click",function(){
var theID = $(this).attr("rel");
$("#fileuploadframe").load(function(){
var response = $("#fileuploadframe").contents().find("html").html();
$.post("siteCreator.script.php",
{action:"savePage",html:response, id: theID},
function(data){
alert(data);
});
});
});
HTML链接(多种链接之一):
因此,当您单击链接时,链接到的页面被打开到iframe中,然后JS激发并等待内容完成加载,然后获取iframe的内容并将其发送到PHP脚本以保存到文件中。我有一个问题,当您单击一行中的多个链接以保存多个文件时,以前所有文件的内容都会被您单击的当前文件覆盖。我已经检查了我的PHP,并且非常肯定错误出在JS上
我已经注意到——因为我已经警告了PHP的返回值——我得到了多个警告框。如果这是加载主页后您单击的第一个链接,则没有问题,但当您单击第二个链接时,除了当前页面的预期警报外,您还会收到您单击的前几页的警报
我希望我解释得很好,如果我需要更好地解释,请让我知道-我真的需要帮助解决这个问题。:)(如果您认为php脚本是相关的,我可以发布它——但它只打印出$u post变量,让我知道发送的页面信息是用于调试的。)
提前谢谢你,
从jQuery.load()
中输入,我认为您需要将脚本更改为:
$(".pageSaveButton").bind("click",function(){
var theID = $(this).attr("rel");
var lnk = $(this).attr("href");//LINK TO LOAD
$("#fileuploadframe").load(lnk,
function(){
//EXECUTE AFTER LOAD IS COMPLETE
var response = $("#fileuploadframe").contents().find("html").html();
$.post("siteCreator.script.php",
{
action:"savePage",
html:response,
id: theID
},
function(data){alert(data);}
);
});
});
对于多个响应,您可以使用类似的方法禁用任何进一步的单击,直到
.post
调用返回。这是因为
$("#fileuploadframe").load(function(){
每次按链接时执行。仅将loadhandler添加到document.ready上的iframe 如果用户能够通过您的UI单击触发此功能的多个链接,那么无论您使用的是单个iframe,您都会遇到此问题。我建议为每个保存过程创建一个iframe,这就是为什么一个过程的呈现不会影响另一个过程。顺便说一下,-如果可以的话,为什么不使用PHP的cURL库呢@贾里德:我没有想到……如果你认为这样更好的话,我可以先把它按这种方式工作,然后再把它看作是一种改进。@贾里德:在前面的评论中补充说:我确实试着用cURL实现了这一点,但我忘了为什么我停止了它-我想这与我无法通过URL传递变量有关,我认为我无法让它正常工作。在某些情况下,我确信这不是最好的解决方案(例如,如果你需要登录)。看起来好像有一个不必要的往返。只是一个想法。你确实需要登录到系统才能使用该接口-但它与应用程序的其余部分无关-除了初始访问权限。我同意-这看起来你的回调位于错误的位置。这解决了问题!这确实是一个简单的解决办法。至于blockui,我实际上已经在我网站的另一个部分实现了它——但多个链接的问题并不是在帖子完成之前它们都被一次点击了,但是block ui仍然是一个停止用户输入的好建议。现在我遇到了在链接加载到iframe之前抓取内容的问题,因此如果您还没有单击链接,它会得到一个空白html页面,但是如果您单击了,它会得到您单击的上一个链接的内容,而不是当前页面。我认为load的函数部分应该只在iframe加载之后执行。有什么想法吗?
$("#fileuploadframe").load(function(){