javascript - php 脚本中的 if/else 不适用于 ajax 请求

标签 javascript php jquery ajax codeigniter


我正在开发一个使用大量 Ajax 的网站,并使用 codeigniter 来构建它。
我有一个带有 post 方法的表单,并且该表单是使用 ajax 请求发布的,该请求使用 if/else 语句调用函数,如下所示:

    if(isset($_POST['save']))
    {
        $data['phase'] = 'translating';
    }
    elseif(isset($_POST['submit']))
    {
        $data['phase'] = 'waiting_approve';
    }

if/else 语句检查哪个按钮被点击,并且在以通常的方式发布表单数据后它可以 100% 工作,但在使用 ajax 请求发布它时永远不会工作。< br/> 我的ajax请求:

    $('#workspace-content').delegate('form#article', 'submit', function(){
    var that = $('form#article'),
        url = that.attr('action'),
        type = that.attr('method'),
        data = {};

        data = that.serialize();

        $.ajax({
            type: type,
            url : url,
            data : data,
            dataType: 'json',

            success: function(data){
                $('#header-search-field').append(data.msg).delay(3000).fadeOut(500, function(){
                    var that = $(this);
                    that.html('').fadeIn();
                });
            }
        });

    return false;
});

有什么建议或解决方案吗?!!

<小时/>

HTML 表单:

<button id="save-article" type="submit" name="save" class="btn btn-info btn-xs pull-left">
    <span class="glyphicon glyphicon-floppy-save"></span>
</button>
<input name="title" type="text" value="<?php echo $work->title;?>" class="form-control" id="title" placeholder="" />
<textarea row="10" name="article" class="form-control" id="article" placeholder=""><?php echo $work->article;?></textarea>
<button id="submit-article" type="submit" name="submit" class="btn btn-info btn-block">Send</button>
<input name="slug" type="hidden" value="<?php echo $work->slug;?>" />

最佳答案

当您正常提交表单时,用于提交表单的按钮将包含在 POST 数据中。但是,当您使用 AJAX 提交并使用 that.serialize() 时,POST 数据仅包含输入字段 - 不包含提交按钮。您需要将提交代码附加到按钮,以便可以向数据添加适当的值。

$('#workspace-content').on('click', 'form#article .btn', function(){
    var that = $(this).closest("form"),
        url = that.attr('action'),
        type = that.attr('method'),
        data = that.serialize();
    data += '&' + this.name + '=1';

    $.ajax({
        type: type,
        url : url,
        data : data,
        dataType: 'json',

        success: function(data){
            $('#header-search-field').append(data.msg).delay(3000).fadeOut(500, function(){
                var that = $(this);
                that.html('').fadeIn();
            });
        }
    });

    return false;
});

关于javascript - php 脚本中的 if/else 不适用于 ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34552788/

相关文章:

javascript - 改变div的位置

javascript - Mac 上的 Chrome 不会启动 WebDAV Word 编辑

php - HTML 下拉菜单加载速度非常慢

javascript - HTML bootstrap popover 函数

jquery - 防止浏览器在提交表单时导航到操作 URL

javascript - 要求 js 从 cdn 加载脚本失败

javascript - 停止图像滚动 paraScrolling

php - 如何使用 PHP 仅返回文件名的第一部分,而不返回扩展名, ".php"

php - 将 sql 表内容从一个表复制到另一个表 - 有条件

jquery - 如何使用 JQuery - 菜单示例为组的所有元素设置动画?