#10 Ericsko
Chyba bude ve scriptu nejspíš ještě někde jinde, po použití JSON.stringify a v php json_decode mi echo nic nevypíše.
Celý script vypadá takto:
data = [
{label: 'BS Player', id: '7'},
{label: 'Microsoft Office', id: '4'},
{label: 'Open Office', id: '1'},
{label: 'Origin', id: '5'},
{label: 'PhotoShop', id: '8'},
{label: 'Skype', id: '2'},
{label: 'Steam', id: '3'},
{label: 'VLC Player', id: '6'},
];
var obj = {
a: document.getElementById('fprograms'),
b: document.getElementById('chprograms')
};
var selected = "";
var pchecked = [];
function rem(chbox, data)
{
pchecked.splice(pchecked.indexOf(chbox.getAttribute("name")),1);
$.ajax({
url: 'result.php',
data: JSON.stringify(pchecked),
type: "POST",
success: function(pchecked) {
$( "#listresult" ).html(pchecked);
},
});
}
function add(chbox, data)
{
pchecked.push(chbox.getAttribute("name"));
$.ajax({
url: 'result.php',
data: JSON.stringify(pchecked),
type: "POST",
success: function(pchecked) {
$( "#listresult" ).html(pchecked);
},
});
}
function check(chbox,obj,data)
{
data[chbox.value*1].check = chbox.checked;
write(obj,data);
};
function write(obj,data)
{
var i,str;
var str = {a:'',b:''};
for (i=0;i<data.length;i++)
{
if (!(data[i].check))
{str.a+='<li><input type=checkbox value =' + i + ' onchange="add(this);check(this,obj,data)" name='+data[i].id+'>' + data[i].label + '</li>';}
else {str.b+='<li><input type=checkbox value = '+ i + ' onchange="rem(this);check(this,obj,data)" name='+data[i].id+' checked="checked">' + data[i].label + '</li>'}
}
obj.a.innerHTML = str.a;
obj.b.innerHTML = str.b;
}
write(obj,data);
A PHP kód:
<?php
$data = json_decode($_POST['id']); /*nevypíše nic*/
$pdata = var_dump(json_decode($_POST['id'])); /*vypíše NULL*/
echo $data;
echo $pdata;
?>
Ještě mě napadá, že by to šlo poslat jako něco jiného než json že? Mohlo by to vyřešit problém? Půjde to pak rozumně spracovat v php a každou položku (id vložené do pchecked) vložit do query dotazu?