[英]Passing object array via jquery ajax to php not working
我正在嘗試創建一個以記錄id為鍵和順序為值的關聯數組。 然后,我想通過ajax將其傳遞給php,在其中我將遍歷數組並更新記錄。 但是它不起作用,我似乎在json_decode($ _ REQUEST ['orderArray'],true)處為空;
代碼有什么問題:
jQuery的:
//Make project task table rows sortable
$('#Task_table tbody').sortable({
items: "tr:not(.disable_sort)",//disable sortable on header row
helper: fixHelperModified, //call helper function
update: function(event, ui) {
var order = {};//create object
$('#Task_table tr').each(function(){//loop through rows
var id = $(this).children('td:first-child').find(".order_number").attr("rel");
var order_number = $(this).children('td:first-child').find(".order_number").val();
//fill object array with keys(task->id) and values (task->order_number)
order[id] = order_number;
});
//convert array to json
var jsonArray = JSON.stringify(order);
//prepare POST data
var dataString = { 'orderArray':jsonArray };
$.ajax({
type: "POST",
url: "index.php?module=Project&action=update_order",
data: dataString,
success: function() {
// location.reload();
}
});
}
});
這通過郵寄發送:orderArray {“ 4b0df1da-8b2d-7776-0026-52d0b3cefbfa”:“ 3”,“ 161699ae-6db0-43d6-e85b-52ca07767b0f”:“ 1”,“ 8da4cfc3-b56d-12da-e34c-52d09ed0b310” : “2”}
的PHP:
//updates the order of the tasks
function action_update_order(){
//create object/array from json data
$orderArray = json_decode($_REQUEST['orderArray'], true);
var_dump($orderArray);
foreach($orderArray as $id => $order_number){
$GLOBALS['log']->fatal('order: '.$order_number[$id]);
$task = new ProjectTask();
$task->retrieve($id);
$task->order_number = $order_number;
$task->save();
}
}
如我所說,我似乎無法通過jasondecode的結果來學習。 由於其ajax也很難調試。
你可以嘗試改變這個嗎
var dataString = { 'orderArray':jsonArray };
至
var dataString = { 'orderArray': order };
由於某種原因,JSON.stringify(order)將Html實體版本的“添加到我的字符串中,因此我需要在php_json_decode之前先在我的php中使用htmlspecialchars_decode();。它似乎可以工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.