2016-07-07 10 views
0

Ich versuche serialisierte Daten mit Ajax Post und einige zusätzliche Daten zu senden. Ich habe den folgenden Weg versucht:Senden von serialisierten Daten plus zusätzliche Daten mit Ajax

Aber es zeigt nur Kontrollkästchen und Text, nicht Titel und Einleitung in der Antwort. Ich habe auch versucht, diese Methode:

$("#prw").on('click', function(e){ 

    var url = window.location.origin + "/newsletter/preview"; 

    var title = $('#title').val(); 
    var intro = $('#intro').val(); 
    var array = table.$('input[type="checkbox"], input[type="text"]').serializeArray(); 
    array.push({name: 'title', value: title}); 
    array.push({name: 'intro', value: intro});  

    $.ajax({ 
     type: "POST", 
     url: url, 
     data: array 
    }).done(function(data){ 
     console.log("Response", data); 
    }); 

    e.preventDefault(); 
}); 

Es funktioniert auch nicht. Diese URL geht an CodeIgniter-Controller:

function preview() { 
    $post = $this->input->post(); 
    print_r($_POST); 
    return $post; 
} 
+0

Sie möchten die Daten als JSON-Objekt in Ihren Anfragetext einfügen. Die Syntax, die Sie derzeit verwenden, verwenden Sie in einer GET-Anforderung im Anforderungsheader. Sehen Sie http://stackoverflow.com/questions/10214723/jquery-ajax-post-data für ein Beispiel, wie man einen Ajax POST macht. – seN

+0

Ich sah diesen Link, also habe ich versucht, es auf ähnliche Weise zu tun, aber es funktioniert nicht – Barba

+0

Auch: Verwenden Sie die Debugger-Funktionen Ihres Webbrowsers zu ** LQQK AT **, was tatsächlich gesendet und empfangen wird. Sehen Sie sich nicht nur die Ansicht Ihres Programms an: Sehen Sie sich den tatsächlichen Datenstrom an. –

Antwort

0

Es ist viel leichter, ein Objekt zu erstellen:

var url = window.location.origin + "/newsletter/preview"; 
var data = { title: $('#title').val() , intro : $('#intro').val() }; 
// I don't know what you table is.. 
// if you tell me the plugin I can help sending that that either 

$.ajax({ 
    type: "POST", 
    url: url, 
    data: $.param(data) 
}).done(function(data){ 
    console.log("Response", data); 
}); 
+0

Es ist DataTables-Plugin – Barba

0

Zunächst einmal beachten Sie, dass die Antwort kann variieren je nachdem, was der API-Endpunkt erwartet. Können Sie uns den Controller/die Methode zeigen, die Sie erreichen möchten?

Davon ausgehend würde ich vermuten, dass der Endpunkt ein JSON-Objekt erwartet (wahrscheinlich stringifiziert).

Mit diesen Annahmen, versuchen Sie Folgendes:

$("#prw").on('click', function(e){ 

var url = window.location.origin + "/newsletter/preview"; 

var title = $('#title').val(); 
var intro = $('#intro').val(); 
// That table reference is a bit unclear to me, is this a 3rd party library? 
var checkbox = false; // Grab your checkbox value here 
var inputVal = null; // Grab your input value here 

var data = { 
title: title, 
intro: intro, 
checkbox: checkbox, 
inputVal: inputVal 
}; 

$.ajax({ 
    type: "POST", 
    url: url, 
    data: JSON.stringify(data), 
    contentType: 'application/json' 
}).done(function(data){ 
    console.log("Response", data); 
}); 

e.preventDefault(); 

});

+0

Tabelle ist eine DataTable-Bibliothek, jetzt zeigt es leere Array – Barba

+0

Okay. Ihr Problem hängt also nicht mit dem AJAX-Aufruf zusammen, sondern mit dem Abrufen der Daten von Ihrer Seite? Also $ ('# title "). Val(), gibt keinen Wert zurück? – seN

+0

Antwortdaten zeigen nicht Titel und Intro. Eingabedaten sind in Ordnung – Barba

Verwandte Themen