javascript - 设置表单提交后的表单操作 jQuery

标签 javascript php jquery forms form-submit

提交表单后如何“设置”操作(不更改)?

<form id="serialize" action="newjob.php?serialize=newjob" method="post">
<button id="jobsearch" name="jobsearch">GET FROM DB</button>
</form>

在提交表单并显示我需要从数据库获取的值之后,设置表单的新操作,例如提交后我如何得到这样的结果,以便我可以将值添加到数据库?

<form id="serialize" action="newjob.php?faulty=newjob" method="post">
<button id="jobsearch" name="jobsearch">ADD TO DB</button>
</form>

据我通过网上搜索得知,这个jquery仅更改(onsubmit)而不是提交后

$(function(){
$('#serialize').submit(function (event)
{
    var newaction = 'newjob.php?faulty=newjob';
    $(this).attr('action', newaction);
});
});

是否可以在提交表单后为同一表单设置新的表单操作?我需要完成此任务的唯一一件事是因为我不能在表单中包含表单(嵌套)

最佳答案

您无法在内部.submit()事件处理程序修改表单属性,因为它是使用典型的提交方法提交的。
在 from 之后已提交,文档已加载,并且尚未捕获为表单设置的任何提交事件。

您有两种选择来解决问题。


  1. AJAX请求而不是传统的表单提交(推荐);
    您应该在原始页面上处理服务器响应(从 PHP 发回的数据),如下所示(无需修改 HTML):

    $('#serialize').submit(function (event){
        // prevent typical submit method:
        event.preventDefault();
        var that = $(this), newaction;
        $.ajax({
            url     : that.attr('action'),
            method  : 'GET',
            data    : that.serialize(),
            // dataType : set accordingly to the type of data received from PHP,
            success : function(data_received_from_php){
                if(that.attr('action') === 'newjob.php?faulty=newjob'){
                    newaction = 'newjob.php?serialize=newjob';
                    // do something with "data_received_from_php" for that specific "action" ...
                }else{
                    newaction = 'newjob.php?faulty=newjob';
                    // do something with "data_received_from_php" for that specific "action" ...
                }
                // set the new action attribute:
                that.attr('action', newaction);
            },
            error   : function(){
                // handle errors ...
            }
        });
    });
    

  • 简单地检查 url 是否包含特定字符串,并根据该字符串修改表单的 action 属性(我将其视为一种解决方法,因为这些天,AJAX 是 提交表单时更加“用户友好”:

    if (window.location.href.indexOf("?serialize=newjob") > -1) {
        $('#serialize').attr('action', 'newjob.php?faulty=newjob');
    }
    
  • 关于javascript - 设置表单提交后的表单操作 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31594536/

    相关文章:

    javascript - Verdaccio 崩溃并出现错误 [ERR_STREAM_DESTROYED] : Cannot call write after a stream was destroyed

    javascript - Uncaught TypeError : core_1. 样式不是函数

    javascript - 从数据库重新加载内容 onclick

    php - 如何快速搭建一个php mysql站点?

    php - Mysql 获取上一个日期记录时出错

    javascript - 如何在页面更改时运行 CoffeeScript ?

    php - 为什么我不能将输入类型日期的最小值设置为今天?

    javascript - 使用 javascript/jquery,更新一组图像的 src 的最佳方法是什么?

    javascript - 直接向表中输入数据

    javascript - jQuery 验证插件 - 无法在 Safari 中工作