2016-10-08 6 views
0

Hallo Überlauf!Ajax Daten werden nicht von PHP empfangen

Ich kann nicht scheinen, meine ajax-Daten richtig zu meiner php Seite zu schicken, es hat völlig gut vorher gearbeitet, aber jetzt funktioniert es nicht.

Ich bekomme die richtigen Daten über console.log, aber auf meiner PHP-Seite bekomme ich Undefined index Fehler.

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); 
} 

EDIT

jQuer y

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 
} 
+0

Ihre Ajax keine URL hat, werden Sie es an anderer Stelle liefern? – Blinkydamo

+1

Sie geben auch task_submit nicht ein, daher wird Ihr Test für isset ($ _ POST ['task_submit']) immer falsch sein. – TimBrownlaw

+0

Ich habe noch nie zuvor eine URL verwendet und es hat immer funktioniert. @Blinkydamo – Tweath

Antwort

1

Was Sie versuchen zu tun, ist die gleiche PHP-Code zu verwenden, drücken Sie die Taste aus der Form und der Ajax-Aufruf zu behandeln. Nicht!

(Anmerkung: Diese Antwort ist nur auf dem Code basiert, die zur Verfügung gestellt wurden und was mit diesem Code zu erreichen versucht.)

So Ihre aktuelle PHP ist, was ich raten bin, ist, was Sie, wenn Sie anrufen Klicke auf die Submit-Schaltfläche ... In diesem Fall wird $ _POST ['task_takers_pre'] nicht existieren, da du das aus dem JS generierst und es im AJAX Call sendest.

Schreiben Sie einen separaten AJAX-Anruf.

Sie müssen eine separate Datei erstellen, um Ihre AJAX-Anrufe zu verarbeiten und die Aufgaben zu erfüllen, die sie erfüllen muss.

// 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(); 
     } 
    } 
+0

In Ordnung, ich werde aktualisiere meine Frage mit einem neuen Code. Die Sache ist, dass die Post sowieso nicht empfangen wird. – Tweath

+0

Ich habe meine Antwort ein wenig geändert (es wurde angenommen, dass Sie Codeigniter verwenden - mein Schlechter). – TimBrownlaw

+0

Nur um zu testen, dass Sie die richtige URL treffen, setzen Sie einfach einen Würfel ("Sie haben mich gefunden!"); in der ersten Zeile der Datei new_task.php. Wenn das nicht funktioniert, versuchen Sie es mit der vollständigen URL. – TimBrownlaw

0

Wenn Sie Juse einige Daten in dem Ajax-Aufruf senden möchten, wenn Sie den Absenden-Button klicken, können Sie false zurück Formulareinreichung im einreichen Ereignisse zu verhindern.

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

Verwandte Themen