2016-07-07 72 views
0

我試圖使用ajax post和一些附加數據發送序列化數據。我試了下面的方法:使用Ajax發送序列化數據和附加數據

$("#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"]').serialize() + "&title=" + title + "&intro=" + intro; 

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

    e.preventDefault(); 
}); 

但它只顯示覆選框和文本,而不是標題和介紹的響應。 我也試過這種方法:

$("#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(); 
}); 

它也行不通。這個網址去的CodeIgniter控制器:

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

您想要將數據作爲JSON對象添加到請求正文中。您當前使用的語法是您在請求標頭中的GET請求中使用的語法。查看http://stackoverflow.com/questions/10214723/jquery-ajax-post-data,瞭解如何執行ajax POST的示例。 – seN

+0

我看到了那個鏈接,所以我試圖以類似的方式做,但它不起作用 – Barba

+0

另外:使用Web瀏覽器的調試器功能** ** LQQK AT **實際發送和接收的內容。不要只看你的程序對它的看法:看看實際的數據流。 –

回答

0

它更容易創建一個對象:

所有的
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

它是DataTables插件 – Barba

0

首先,要知道,答案可能取決於哪些API端點期待有所不同。你能告訴我們你想要達到的控制器/方法嗎?

這就是說,我猜測端點期望JSON對象(可能是字符串)。

有了這些假設,請嘗試以下操作:

$("#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

表是一個DataTable庫,現在它顯示空數組 – Barba

+0

好吧。所以你的問題與AJAX調用無關,而是關於從你的頁面獲取數據?所以$('#title')。val(),沒有返回值? – seN

+0

響應數據不顯示標題和介紹輸入數據正常 – Barba