Ajax数据没有被php接收

时间:2016-10-08 23:26:19

标签: php jquery ajax

你好溢出者!

我似乎无法正确地将我的ajax数据发送到我的php页面,它之前完全正常,但现在它无法正常工作。

我通过console.log获取了正确的数据,但在我的php页面上我发现Undefined index错误。

Jquery的

  var task_takers_pre = [];
  var task_takers = [];
  var i = 1;

  $(".new-task-takers ul.select_takers li").on('click', function(){
    $(this).each(function(){
      $(this).toggleClass("active");
      if($(this).find('.fa').length > 0){
        $(this).find('.fa').remove();
        i -= 1;
        var removeItem = $(this).data("id");
        task_takers_pre.remove(removeItem);
        console.log(task_takers_pre);
      }else{
        $('<i class="fa fa-check" aria-hidden="true"></i>').insertBefore($(this).find("div"));
        i += 1;
        task_takers_pre[i] = $(this).data("id");
        console.log(task_takers_pre);
      }

      $.each(task_takers_pre, function (index, value) {
        if ($.inArray(value, task_takers) == -1) {
          task_takers.push(index, value);
        }
      });
    });
  });

  $("#new-task").on('submit', function(){
    console.log(task_takers_pre);
    $.ajax({
      type: 'POST',
      url: '',
      cache: false,
      data: {task_takers_pre : task_takers_pre },
      success: function(data) {
        //console.log(data)
      }
    });
  });

PHP

if(isset($_POST['task_submit'])){
    $task_takers = $_POST['task_takers_pre'][0];
    var_dump($task_takers);
}

修改

的jQuery

var task_takers_pre = [];
  var task_takers = [];
  var i = 1;

  $(".new-task-takers ul.select_takers li").on('click', function(){
    $(this).each(function(){
      $(this).toggleClass("active");
      if($(this).find('.fa').length > 0){
        $(this).find('.fa').remove();
        i -= 1;
        var removeItem = $(this).data("id");
        task_takers_pre.remove(removeItem);
        console.log(task_takers_pre);
      }else{
        $('<i class="fa fa-check" aria-hidden="true"></i>').insertBefore($(this).find("div"));
        i += 1;
        task_takers_pre[i] = $(this).data("id");
        console.log(task_takers_pre);
      }

      $.each(task_takers_pre, function (index, value) {
        if ($.inArray(value, task_takers) == -1) {
          task_takers.push(index, value);
        }
      });
    });
  });

  $(".assign").on('click', function(){
      console.log(task_takers_pre);
      $.ajax({
        type: 'POST',
        url: './core/includes/new_task.php',
        cache: false,
        data: {task_takers_pre : task_takers_pre},
        success: function(data) {
          //console.log(data)
        }
      });
      $.ajax({
        type: 'POST',
        url: '',
        cache: false,
        data: {'task_takers_pre' : task_takers_pre},
        success: function(data) {
          //console.log(data)
        }
      });
    });

PHP

if(isset($_POST['task_takers_pre'][0])){
    $task_takers = $_POST['task_takers_pre'][0]; // Just for testing
    var_dump($task_takers);                      // Just for testing
}

if(isset($_POST['task_takers_pre'])){
    $task_takers2 = $_POST['task_takers_pre']; // Just for testing
    var_dump($task_takers2);                      // Just for testing
}

2 个答案:

答案 0 :(得分:1)

您尝试做的是使用相同的PHP代码来处理Form和AJAX Call中的Button Press。唐&#39;!吨

(注意:此答案仅基于已提供的代码以及尝试使用此代码实现的目标。)

所以你当前的PHP是,我猜你单击提交按钮时会调用...在这种情况下,$ _POST [&#39; task_takers_pre&#39;]将不存在,因为你从JS并将其发送到AJAX Call。

写一个单独的AJAX调用。

您需要创建一个单独的文件来处理您的AJAX调用,并让它执行它需要执行的任务。

// This is just for testing my AJAX Call
    public function ajax_post(){
      if(isset($_POST['task_takers_pre'])){
        $task_takers = $_POST['task_takers_pre'][0]; // Just for testing
        var_dump($task_takers);                      // Just for testing
        die();
      }
      else {
      // Illegal access/entry do something...
      echo 'Error - I had better check what I am posting.';
      die();
      }
    }

答案 1 :(得分:0)

如果您在单击“提交”按钮时想要在AJAX调用中发送一些数据,则可以返回false以防止在提交事件中提交表单。

mem_fn