当前位置: 首页 > 面试题库 >

使用jQuery / Ajax提交表单仅每隔一次即可

淳于健
2023-03-14
问题内容

我正在尝试提交一个包含通过Ajax / jQuery上传文件的表单,通过PHP脚本处理该表单,然后将结果返回到该表单最初所在的div中。

我当前的表单代码是:

<section id="content-right">
<form name="uploader" id="uploader" method="POST" enctype="multipart/form-data">
    <input type="hidden" id="MAX_FILE_SIZE" name="MAX_FILE_SIZE" value="10485760" />
    <input type="file" name="fileselect" id="fileselect" />
    <input type="submit" name="submit" id="submit" value="Upload" />
</form>
</section>

我当前的Ajax / jQuery脚本是:

<script> 
$(function() {
$('#uploader').submit(function() { 
        $(this).ajaxSubmit({
            type: $(this).attr('method'),
            url: 'upload-song.php',
            success: function(response) {
                $('#content-right').html(response);
                }
            }); 
    return false; 
    });
});

我的PHP脚本是“ upload-song.php”(细节无关紧要)。

我还运行YUI.Pjax来处理常规导航(a href)链接并将其加载到#content-
right中(如果用户单击任何内容,我希望将其加载到#content-right中)。

设置好之后,正常链接的浏览就可以完美地进行,所有内容都加载在#content-right中,但上传器仅每隔两次运行一次。

例如,上传者将在#content-right中加载upload-
song.php并完美地处理所有内容,然后,如果我离开页面导航并尝试上传其他项目,它将无法正常工作,它将刷新页面(如果我将action =“ upload-
song.php”放在表单标签中,则会将upload-song.php加载为整页,而不是#content-
right)。刷新页面后,我可以上传另一个项目,并且可以正常运行。

我认为这与我将Ajax脚本附加到表单提交有关(因为如果刷新页面,它可以完美地工作),但是我对这些语言没有太多经验,所以我不确定如何解决。

另外,如果我禁用YUI.Pjax,它会修复上传器,但显然会破坏我的链接,因此我正在寻找解决方法

有任何想法吗?


问题答案:

试试这个:

$(document).on("submit", "#uploader", function() ...

这种语法将使Submit事件冒泡到文档中。这样,当#content_right重新加载该部分时,文档将保留在DOM ready函数中设置的事件侦听响应。



 类似资料:
  • 问题内容: 我有一个要通过jQuery捕获并通过AJAX发送的表单。我的问题是,每次刷新页面时,表单都会提交多次。 我尝试取消绑定“提交”按钮,但通常在第一次提交后发布表单。任何帮助,将不胜感激 问题答案: 您最有可能正在使用或触发ajax事件。试试这个:

  • 问题内容: 看起来这应该是jQuery内置的东西,不需要多行代码,但是我找不到“简单”的解决方案。说,我有一个HTML表单: 当有人更改选择字段时,我想使用ajax提交表单以更新数据库。我认为可以通过以下方式来执行以下操作,而无需手动创建值/属性,只需将它们全部发送即可,例如: 我想念什么? 问题答案: 这就是最终的工作。

  • 问题内容: 我试图使用此示例使用AJAX提交HTML表单。 我的HTML代码: 我的剧本: 这是行不通的,我什至没有收到警告消息,提交时我不想重定向到另一个页面,我只想显示警告消息。 有简单的方法吗? PS:我有几个领域,我仅举两个例子。 问题答案: AJAX快速描述 AJAX只是异步JSON或XML(在大多数新情况下为JSON)。因为我们正在执行ASYNC任务,所以我们很可能会为我们的用户提供更

  • 问题内容: 此代码正确吗?我正在尝试提交,如果文本区域再次为空,我也想提交。 我正在尝试上传: 谢谢… 问题答案: 用 代替 如果您使用的是最新版本的jquery。

  • 问题内容: 我有一个带有名称和未定义输入数量的表单。 我想做某种jQuery.get或ajax或类似的事情,它将通过Ajax调用页面,并发送表单的所有输入。 我想一种方法是做类似的事情 但是我不完全知道所有的表格输入。是否有仅发送所有表单输入的功能部件或功能? 问题答案: 您可以使用Ajax表单插件中的ajaxForm / ajaxSubmit函数或jQuery序列化函数。 AjaxForm :

  • 问题内容: 我有一个简单的AJAX表单,该表单可以在提交时正常运行。但是,如果我随后将新数据输入相同的表单(而不刷新页面),则它将提交两次表单。如果我第三次这样做,那么它将第三次提交表单,依此类推。为什么这样做呢?这是我的代码: 问题答案: 即使我在开发AJAX登录表单时也遇到了同样的问题。搜寻了几个小时后,我找到了解决方案。希望这对您有所帮助。 基本上,您必须在ajax请求完成后 取消绑定 表单