AJAX Nestable JSON data to PHP with AJAX
Ik heb een vraagje. Op deze pagina heb ik een stukje code staan die dmv een jquery plugin de menu-items kan ordenen. Dit werkt allemaal prachtig maar nu moeten we het ook nog opslaan natuurlijk.
Er word gebruik gemaakt van een "serialize" deze rauwe code echo ik voor jullie in de console van je browser.
"console.log($('#dragmenuitems').nestable('serialize'));"
Ook word er een functie aangesproken die de data via AJAX moet verzenden naar een andere pagina, maar hier gebeurd helaas niet zoveel en zit mijn probleem.
Ik verstuur de data naar mijn mening gecodeerd in JSON naar een PHP pagina dmv POST en daar moet de hele rotzooi voor de test even geprint worden.
Dit is de code die ik gebruik om dit voor mekaar te boksen.
Javascript:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Sortable menu-items
$('#dragmenuitems').nestable({
}).on('change', function()
{
updateMenuOrder($('#dragmenuitems').nestable('serialize'));
});
// En de functie (die natuurlijk word gedefineerd voopdat de bovenstaande code word aangeroepen
function updateMenuOrder(jsondata)
{
$.ajax({
type : 'POST',
data : jsondata,
dataType : 'json',
url : 'lemon/menu/test'
});
}
// En dan uiteindelijk de php om het de echoen
public function test()
{
printr($_POST);
}
$('#dragmenuitems').nestable({
}).on('change', function()
{
updateMenuOrder($('#dragmenuitems').nestable('serialize'));
});
// En de functie (die natuurlijk word gedefineerd voopdat de bovenstaande code word aangeroepen
function updateMenuOrder(jsondata)
{
$.ajax({
type : 'POST',
data : jsondata,
dataType : 'json',
url : 'lemon/menu/test'
});
}
// En dan uiteindelijk de php om het de echoen
public function test()
{
printr($_POST);
}
Ik gebruik Codeigniter daarom is de pagina test een method/function. Dit werkt wel alleen hij laat niets zien.
Wat doe ik fout?
Link naar de pagina hier
Alvast bedankt.
Op zich niet zo'n probleem.
Alleen dit komt niet goed mee in je ajax call daar zie ik namelijk alleen maar 'undefined'. Ook is het zo dat je op deze manier niet iets in een JSON formaat verstuurt. Als je in een ajax call als datatype 'json' meegeeft, dan betekent dat dat de browser de response van de server verwacht in json. Met de data die je verstuurt wordt niets gedaan. Als je de verstuurde data in json wilt hebben zal je dat zelf moeten bouwen.
Waar het denk ik mis gaat is de manier waarop je de gegevens mee stuurt. Je hebt nu dit:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$.ajax({
type : 'POST',
data : jsondata,
dataType : 'json',
url : 'lemon/menu/test'
});
type : 'POST',
data : jsondata,
dataType : 'json',
url : 'lemon/menu/test'
});
Maar in data verwacht jquery een object. jsondata in dit geval, is een object (weliswaar een array, maar ook dat is een object). Het zal dus proberen die array te gebruiken en dat lukt niet. Probeer eens dit:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$.ajax({
type : 'POST',
data : {'menu': jsondata},
dataType : 'json',
url : 'lemon/menu/test'
});
type : 'POST',
data : {'menu': jsondata},
dataType : 'json',
url : 'lemon/menu/test'
});
Nu zou je in elk geval een menu element in de $_POST array moeten zien, of de data dan al goed meekomt is nog even de vraag.
Mijn volgende stap is om de data nu op de staan (updaten) in mysql. Hopelijk gaat me dit lukken anders kom ik toch nog eventjes bij jou aankloppen.
Bedankt Erwin.