【问题标题】:php can't get multiple ajax submit dataphp无法获取多个ajax提交数据
【发布时间】:2016-02-26 04:08:29
【问题描述】:

我有一个表单,它有 2 个提交按钮。

<form name="posting" id="posting" method="post" action="posting_bk.php" role="form">
<input type="text" name="title" id="title" class="form-control" required="required">
....some form fields...
    <input class="btn btn-home" type="submit" name="publish" id="publish" alt="Publish" value="Preview and Post" />
    <input class="btn btn-home" type="submit" name="save" id="save" onclick="return confirm('Are you sure you want to Submit.')" alt="Save" value="Save as Draft" /></center>
</form>

我正在使用 ajax 发送/接收数据。

 $('#posting input[type="submit"]').on("click", function(e) {
   e.preventDefault;
   var btn = $('#publish');
   var el = $(this).attr('id');
   $.ajax({
     type: 'post',
     url: $('form#posting').attr('action'),
     cache: false,
     dataType: 'json',
     data: {
       data: $('form#posting').serialize(),
       action: el
     },
     beforeSend: function() {
       $("#validation-errors").hide().empty();
     },
     success: function(data) {
       if (data.success == false) {
         var arr = data.errors;
         $.each(arr, function(index, value) {
           if (value.length != 0) {
             $("#validation-errors").append('<div class="alert alert-danger"><strong>' + value + '</strong><div>');


           }
         });
         $("#validation-errors").show();
         btn.button('reset');
       } else {
         $("#success").html('<div class="alert alert-success">Basic details saved successfully. <br> If you want to edit then please goto <a href="edit.php">Edit</a>. <div>');
         $('#title').val('');

       }
     },
     error: function(xhr, textStatus, thrownError) {
       alert('Something went to wrong.Please Try again later...');

       btn.button('reset');
     }
   });
   return false;
 });

这是我的 php 文件。 posting_bk.php

if ($_POST['action'] == 'publish') {
         if($title == 'test'){
         array_push($res['errors'], 'data received  by php.');
    }else{
             array_push($res['errors'], 'No data received by php.');

    }
    $res['success'] = true;
    echo json_encode($res);
        }
        elseif ($_POST['action'] == 'save') {
            array_push($res['errors'], 'Save button clicked.');
    $res['success'] = true;
    echo json_encode($res);
    }

如果我点击 publish 按钮,我会一直得到

php没有接收到数据

当我签入萤火虫时,它在帖子下显示数据。 像这样

动作发布
数据标题=测试&

我不确定我在这里做错了什么。请指教。

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

    更改要使用的 AJAX 调用:

    data: $('form#posting').serialize() + '&action=' + el,\
    

    然后访问参数使用

    $title = $_POST['title'];
    

    按照您的操作方式,表单数据嵌套在POST 数据中,因此您必须这样做:

    $data = parse_str($_POST['data']);
    $title = $data['title'];
    

    【讨论】:

    • 感谢您的回答。让我试试。我正在使用 $title = $_POST['title'];不幸的是忘记添加问题。
    • 我在萤火虫中得到了这个。 function (){return n.param(this.serializeArray())}&action=publish 正常吗?
    • 对不起,我打错了,应该是serialize(),就像你原来的代码一样。
    • 感谢您的帮助。有效。但我改变了 $title= $_POST['title'];然后它正在工作。
    • 这不是改变,这就是你所说的你已经在做的事情。我从答案中删除了它,因为您说您只是忘记将其复制到问题中。
    猜你喜欢
    • 2020-11-24
    • 2019-01-06
    • 2017-10-24
    • 1970-01-01
    • 2022-01-15
    • 2019-11-12
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    相关资源
    最近更新 更多