2015-08-22 44 views
0

我想在js中發送ajax數組,並將它作爲數組在php中獲取並插入到sql中。如何在Ajax中發送數組並將其作爲數組在0123中獲取它

我的Ajax調用是這樣的:

jQuery("#Save").click(function() { 
    $(".linesView").each(function() { 
    var action_name = ""; 
    if (window.current_category === "Expenses") { 
     action_name = "Save_Expenses" 
    } else if(window.current_category === "Incomes") { 
     action_name = "Save_Incomes" 
    } 
    var line_id = $(this).attr("id").substring(5); 
    var category = $("#CategoryValue_" + line_id).html(); 
    var date = $("#DateValue_" + line_id).html(); 
    var amount = $("#AmountValue_" + line_id).val(); 
    var repeated = $("#RepeatedValue_" + line_id).html(); 
    var note = $("#NoteValue_" + line_id).val(); 
    var data = json_encode([category,date,amount,repeated,note]); 

    $.post("AjaxHandler.php", { "action_name": action_name, "data": data }, function() { 
     //$("#ExpensesId_" + id).css('display', 'none'); 
    }); 
    }); 
}); 

需要得到Ajax調用並添加數據(由SQL INSERT)的PHP代碼如下所示:

if(isset($_POST['action_name','data'])) { 
    $action_name = $_POST['action_name']; 
    $data=json_decode($_POST['data']); 
    $query = mysql_query("INSERT INTO Expenses (accountid, category, date, amount, repeated) VALUES ('$accountid', '$data[0]', '$data[1]', '$data[2]', '0')"); 
} 

accountid從哪裏來頁面的頂部,我已經做刪除操作,它工作正常,所以accountid是好的。所有其他人,我不知道。

我試着編碼然後解碼。我不確定語法是否正確。無論如何,如果我沒有寫出優雅的代碼,請告訴我它是如何看起來的。也許我需要從數據中獲取每個參數,而不是致電data[x]

+0

'json_encode'是不是一個有效的JavaScript函數,它是一個PHP函數 –

+0

歡迎堆棧溢出!我編輯了你的問題來解決幾個錯誤。我還縮進了代碼示例,以便它能夠正確呈現 - 請參閱編輯幫助以獲取有關格式化的更多信息。另外,請注意,您不需要在問題的底部或開頭添加求助信息。祝你好運! – Wtower

回答

0

使用JSON.stringify()

var data = ([category,date,amount,repeated,note]); 
$.post("AjaxHandler.php", { "action_name": action_name, "data": JSON.stringify(data) }, function() { 
    //$("#ExpensesId_" + id).css('display', 'none'); 
}); 
+0

ajax現在工作正常,但我認爲,但插入的PHP沒有工作,也許插入是不正確的?它不採取'$ data [0]'mayben我可以添加特殊的字符來標記它的一個PHP變種? – Rafael

+0

嘗試在你的php中使用'print_r($ data)'來查看如何從控制檯接收數據,然後你可以迭代,並且我認爲你的查詢很好,我們需要檢查數據是如何顯示的 – joyBlanks

0

編碼數據陣列,以在javascript使用JSON.stringify() JSON字符串。在服務器端使用json_decode()來解碼數據。

的jQuery:

jQuery("#Save").click(function() { 
    $(".linesView").each(function() { 
    var action_name = ""; 
    if (window.current_category === "Expenses") { 
     action_name = "Save_Expenses" 
    } else if (window.current_category === "Incomes") { 
     action_name = "Save_Incomes" 
    } 
    var line_id = $(this).attr("id").substring(5); 
    var category = $("#CategoryValue_" + line_id).html(); 
    var date = $("#DateValue_" + line_id).html(); 
    var amount = $("#AmountValue_" + line_id).val(); 
    var repeated = $("#RepeatedValue_" + line_id).html(); 
    var note = $("#NoteValue_" + line_id).val(); 
    var data = JSON.stringify([category, date, amount, repeated, note]); 
    //-----------------^--- Array to JSON string 
    $.post("AjaxHandler.php", { 
     "action_name": action_name, 
     "data": data 
    }, function() { 
     //$("#ExpensesId_" + id).css('display', 'none'); 
    }); 
    }); 
}); 

PHP:

if(isset($_POST['action_name','data'])){ 
    $action_name = $_POST['action_name']; 
    $data=json_decode(json_decode($_POST['data'])); 
    //-----^--- decoding JSON string 
    $query = mysql_query("INSERT INTO Expenses (accountid, category, date, amount, repeated) VALUES ('$accountid', '$data[0]', '$data[1]', '$data[2]', '0')"); 
} 
相關問題