jQuery iframe 多次加载

发布于 2024-11-17 04:38:38 字数 639 浏览 3 评论 0原文

我正在创建一个使用 jQuery 和 iFrame 上传文件的脚本。所以,我有一个 id="myform" 和 target="myframe" 的表单以及一个 id="myframe" 和 name="myframe" 的框架。当用户选择一个文件时,表单会自动提交,并且在 iframe 加载结果后我会提醒他们。问题是,我第一次上传文件时收到一个警报,第二次收到两个警报,第三次上传时收到三个警报。我的代码就像

$("#myform input").change(function () { 
    alert("submitting");
    $("#myform").submit();
});

$("#myform").submit(function () {
    alert(submited);
    $("#myframe").load(function () {
        alert ("loaded!");
        alert ($(this).contents().text());
    });
});

我多次收到的警报是“已加载!”和 $(this).contents().text() 这意味着表单提交一次并且 iframe“加载”多次。我通过 Chrome 控制台验证了这一点,每次提交时我的操作文件仅被调用一次。为什么会发生这种情况?

I am creating a script for file uploading using jQuery and iFrame. So, I have a form with id="myform" and target="myframe" and a frame with id="myframe" and name="myframe" . When the user selects a file the form gets automatically submited and after the iframe loads th results I alert them. The problem is that the first time I upload a file I get one alert, the second two, the third time I upload I get three. My code is like

$("#myform input").change(function () { 
    alert("submitting");
    $("#myform").submit();
});

$("#myform").submit(function () {
    alert(submited);
    $("#myframe").load(function () {
        alert ("loaded!");
        alert ($(this).contents().text());
    });
});

The alerts that I get multiple time is the "loaded!" and the $(this).contents().text()
That means the form gets submitted once and the iframe "loads" more than one times. I validated this through the Chrome Console, where my action file gets called only once per submit. Why is this happening?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

洋洋洒洒 2024-11-24 04:38:38

看来您每次提交表单时都会为 $("#myframe").load 添加一个新的处理程序。

尝试:

$("#myform input").change(function () { 
    alert("submitting");
    $("#myform").submit();
});

$("#myform").submit(function () {
    alert(submited);
    $("#myframe").unbind('load');
    $("#myframe").load(function () {
        alert ("loaded!");
        alert ($(this).contents().text());
    });
});

或:

$("#myform input").change(function () { 
    alert("submitting");
    $("#myform").submit();
});

$("#myframe").load(function () {
    alert ("loaded!");
    alert ($(this).contents().text());
});

$("#myform").submit(function () {
    alert(submited);
});

It appears that you are adding a new handler for $("#myframe").load each time your form is submitted.

try :

$("#myform input").change(function () { 
    alert("submitting");
    $("#myform").submit();
});

$("#myform").submit(function () {
    alert(submited);
    $("#myframe").unbind('load');
    $("#myframe").load(function () {
        alert ("loaded!");
        alert ($(this).contents().text());
    });
});

or:

$("#myform input").change(function () { 
    alert("submitting");
    $("#myform").submit();
});

$("#myframe").load(function () {
    alert ("loaded!");
    alert ($(this).contents().text());
});

$("#myform").submit(function () {
    alert(submited);
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文