2015-05-14 38 views
0

JS的Json字符串化在JS和解碼在PHP

var sim_list=[]; 
var simvalue = $('input[name="simnamecbx"]:checked').each(function(){ 
    var sim_name=this.value.split(" ")[0]; 
    console.log("simname:",sim_name); 
    sim_list.push({ 
     sim_name 
    }); 
); 
console.log(sim_list); 
var simulation_list = JSON.stringify(sim_list);  
$.ajax({ url: 'addprogram.php', 
    data: {addpgmname:addprogname, addpgmcomp:addprogcomp, addpgmdate:addprogdate, simselvalue:simulation_list}, 
    type: 'post', 
    dataType: 'json', 
    success: function(output){ 
     var a = output; 
     console.log(a); 
    } 
}); 

PHP

$simvalue = json_decode($_POST["simselvalue"],true); 
foreach($simvalue as $key => $value) { 
    print_r($value); 
} 

問題

當我執行上述PHP時得到的值作爲

Array 
(
    [0] => Array 
     (
      [sim_name] => 12 
     ) 

    [1] => Array 
     (
      [sim_name] => 13 
     ) 

    [2] => Array 
     (
      [sim_name] => 14 
     ) 

) 

但我想結果是像12,13,14可以插入到MySQL表中。請解釋如何解析我從javascript獲得的數組。

+0

$ simvalue是一個數組,所以只需使用foreach循環,然後將其插入 –

+0

是否有任何錯誤的安慰??? – syms

+0

上面的輸出你必須越來越''print_r($ _ POST [「simselvalue」])'對嗎? –

回答

1

我覺得現在的問題是,你在你的陣列與推的sim_name對象,而不是實際的價值。這實際上只適用於ES6兼容的瀏覽器,使您的錯誤不可見。

的問題是這部分在JavaScript代碼:

sim_list.push({ 
    sim_name 
}); 

在ECMAScript中6,這是下面的等價:

sim_list.push({ 
    sim_name: sim_name 
}); 

因此,你正在推動一個物體與sim_name屬性集到數字(例如12,13,14)。

我認爲你需要做的是以下幾點:

sim_list.push(sim_name) 

這隻會數推到陣列上。

現在一切都在一起:

JS

var sim_list = [] 

$('input[name="simnamecbx"]:checked').each(function() { 
    var sim_name = this.value.split(' ')[0] 
    sim_list.push(sim_name) 
}) 

var data = { 
    addpgmname: addprogname, 
    addpgmcomp: addprogcomp, 
    addpgmdate: addprogdate, 
    simselvalue: JSON.stringify(sim_list) 
} 

$.ajax({ 
    url: 'addprogram.php', 
    data: data, 
    type: 'post', 
    dataType: 'json', 
    success: function (output) { 
    console.log(output) 
    } 
}) 

PHP

$simvalue = json_decode($_POST["simselvalue"]); 

print("The selected values was: " . implode($simvalue, ", ")); 
0

最簡單的方法:

$data = json_decode($_POST["simselvalue"], true) // true = associative array 

foreach($data as $key => $value) { 
    // database query 
}