javascript - 防止在表单提交后重定向到 php 文件

标签 javascript php jquery ajax forms

在研究了太多小时之后,我终于决定自己发布这个问题,因为对其他人有用的东西似乎对我不起作用。请记住,我对 ajax 和 jquery 还很陌生,但由于我的当前项目快到截止日期了,所以我没有时间完成所有工作。

我有以下 html 表单:

<div class="form">
    <form id="savePlacemarkForm" method="post" action="createPlacemark.php">
        <div>
            <input type="text" id="placemarkName" name="placemarkName" placeholder="Name:"/>
        </div>
        <div>
            <input type="text" id="placemarkAddress" name="placemarkAddress" placeholder="Adress:"/>
        </div>
        <div>
            <input type="text" id="placemarkTag" name="placemarkTag" placeholder="Tags:"/>
        </div>
        <div>
            <textarea id="placemarkDescription" name="placemarkDescription" placeholder="Description" rows="1" cols="1"></textarea>
        </div>
        <div>
            <input id="latitude" type="text" name="latitude"/>
        </div>
        <div>
            <input id="longtitude" type="text" name="longtitude"/>
        </div>
        <button class="md-close" id="savePlacemark" onclick="createPlacemark();"/>Save</button>
    </form>
    <button class="md-close">Cancel</button>
    <script src="my_script.js" type="text/javascript"></script>
</div>

如您所见,我将操作设置为 createPlacemark.php,它从这些字段中获取输入并将其保存到我的数据库中,效果很好!!但是,因为这应该可以在不重定向或重新提交页面的情况下工作,这意味着 ajax!我包括 my_script.js,它看起来像这样:

$("#savePlacemark").click( function() {
    $.post( $("#savePlacemarkForm").attr("action"), 
        $("#savePlacemarkForm :input").serializeArray();                     
    });
    clearInput();
});

$("#savePlacemarkForm").submit( function() {
    return false;   
});

function clearInput() {
    $("#savePlacemarkForm :input").each( function() {
        $(this).val('');
    });
}   

如您所见,它为我发送了帖子,这有效,但由于某种原因返回 false;似乎对我不起作用,因为我不断被重定向到前面提到的 php 文件。

任何帮助将不胜感激!谢谢!

最佳答案

尝试以下操作。 .submit() 函数实际上触发了表单的提交。将其从脚本中删除,因为当您已经使用 $.post 发布值时就不需要它了。

$("#savePlacemark").click( function() {
 $.post( $("#savePlacemarkForm").attr("action"), 
         $("#savePlacemarkForm :input").serializeArray();                    
  });
  clearInput();
});

function clearInput() {
    $("#savePlacemarkForm :input").each( function() {
       $(this).val('');
    });
}   

关于javascript - 防止在表单提交后重定向到 php 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19681043/

相关文章:

javascript - 网页中的非 Canvas 图形

php - 来自 PHP 的 Angular 和日期 InvalidPipeArgument : 'Unable to convert "[object Object ]"into a date' for pipe 'DatePipe'

php - 如何在phpexcel中设置自动高度?

c# - 我将如何在 PHP 中生成相同的 token ? (来自.NET)

javascript - 使用 JSON 从 Ajax 调用获取未定义的数组类型

javascript - 在 extjs4 中编辑时需要对齐复选框、添加多条记录和查看日期字段?

javascript - jQuery/javascript 在 Windows 之间通信?

javascript - 使用 laravel 从数据库中存在的大文本中获取少量文本

javascript - 尝试在 Canvas 和 javascript 上使用圆形波纹制作音频可视化

jquery - 如何使用 CSS 创建管理固定背景?