2015-05-14 37 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 
}