Json
Ik ben een beetje aan het kijken naar Json. Maar ik loop op een stukje vast. Kan zijn dat ik totaal verkeerd bezig ben, maar toch even hier navraag doen.
Ik probeer via Json data te versturen naar een php bestand zodat ik deze fijn kan uitlezen. Echter, het verzenden werkt (via firebug gecontroleerd) maar eenmaal in het php bestand kan ik het geheel niet meer terug vinden. Ik verwachte het in de $_POST maar het zijn allemaal NULL waardes.
Zie hier mijn stukje javascript die het Json zou moeten verzenden:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$('[name="loginSubmit"]').bind('click', function(e) {
$.ajax({
type: "POST",
url: 'Backend/Ajax/Login/LoginHandler.php',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify('{Data: {Username: "' + $('[name="txtUsername"]').val() + '", Password: "' + $('[name="txtPassword"]').val() + '", DailyToken: "' + $('[name="txtDailyToken"]').val() + '", Captcha: "' + $('[name="txtCaptcha"]').val() + '"}}'),
success: function(json) {
//$("#success").html("json.length=" + json.length);
itemAddCallback(json);
alert(json);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$("#error").html(XMLHttpRequest.responseText);
}
});
e.preventDefault();
});
$.ajax({
type: "POST",
url: 'Backend/Ajax/Login/LoginHandler.php',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify('{Data: {Username: "' + $('[name="txtUsername"]').val() + '", Password: "' + $('[name="txtPassword"]').val() + '", DailyToken: "' + $('[name="txtDailyToken"]').val() + '", Captcha: "' + $('[name="txtCaptcha"]').val() + '"}}'),
success: function(json) {
//$("#success").html("json.length=" + json.length);
itemAddCallback(json);
alert(json);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$("#error").html(XMLHttpRequest.responseText);
}
});
e.preventDefault();
});
In de LoginHandler heb ik al de $_POST gedumpt, de $_GET gedumped en zelfs $_REQUEST. Maar alles is leeg.
Nu mijn vraag, na ongeveer 2 uur de servers van google te belasten heb ik alleen maar voorbeelden gevonden die andersom werkten. Dus een Json string terug zenden naar javascript waardoor je dus met die objecten kunt werken. Maar ik kan nergens een goed voorbeeld vinden dat je juist je data wilt verzenden en het via PHP wilt uitlezen. Hoort dat zo? Is Json alleen maar bedoelt om objecten naar javascript te versturen, of zou het ook de andere weg moeten kunnen (welke ik nu dus probeer).
Kusje.
Quote:
Hoort dat zo? Is Json alleen maar bedoelt om objecten naar javascript te versturen, of zou het ook de andere weg moeten kunnen (welke ik nu dus probeer).
Het kan allebei zo ver ik weet.
Je hebt json_encode en decode dus.
Verder heb ik er nog niet veel mee gewerkt, maar je zou eens moeten kijken naar een scriptje wat blanche eens heeft geschreven..
Link
Quote:
Kusje
Naah vooruit, eentje terug dan, EDIT: als je tenminste een meisje bent... Je weet natuurlijk nooit..
Gewijzigd op 06/09/2010 21:08:28 door Niels K
Voor zover ik weet ligt het probleem niet bij het verzenden van de data. Die word wel verstuurd. Echter kan ik niet achterhalen hoe ik de data kan aanroepen in het PHP bestand. En hoe ik kan bepalen hoe bijvoorbeeld die var gaat heten.
json_decode ? Wat heb je nu in je PHP al staan dan?
Wil je perse JSON gebruiken dan? Want ik doe het altijd gewoon met AJAX functie van JQuery. Ik zie nu trouwens ook dat je met JQuery json kan gebruiken.
jquery + json
Ah, waarschijnlijk dus met Wil je perse JSON gebruiken dan? Want ik doe het altijd gewoon met AJAX functie van JQuery. Ik zie nu trouwens ook dat je met JQuery json kan gebruiken.
jquery + json
Gewijzigd op 06/09/2010 21:16:14 door Niels K
Resulteert in NULL NULL NULL.
Gewijzigd op 06/09/2010 21:17:27 door Niels K
Ja kan ook met Ajax maar ik doe dit omdat ik wil kijken of Json mij bevalt. De link met jquery en json resulteert alleen in voorbeelden hoe je een Json string kunt handlen binnen javascript. Niet hoe je het verzend + opvangt met php.
- http://www.php-editors.com/articles/php-json.php
- http://www.factsandpeople.com/facts-mainmenu-5/26-html-and-javascript/89-jquery-ajax-json-and-php
- http://www.coderholic.com/javascript-json-and-php/
Ik heb ze niet door gelezen, voor volgens mij is het wat jij bedoeld..
Die heb ik al wel doorgelezen maar ik kan ook daaruit mijn vraag niet achterhalen.
Ik zit zelf even wat te proberen, maar heb weinig tijd, ik zal morgen op het werk nog wel even voor je navragen. Er is een persoon die een gehele module voor ophalen en verzenden heeft gemaakt..
Zal ik kunnen waarderen als je dat voor mij na wilt vragen. Cheers.
de documentatie daarvan, en dan vooral die voorbeelden onderaan voor hoe je je data argument moet vullen.
Je ziet de output in Firebug zeg je, als het goed is kan je dan ook zien of de data verzonden is, als body (of gewoon data) van de request. In wat voor formaat is dat? Kan je dat eens kopieren en plakken hier?
PHP zelf kan die body omzetten in waardes in een $_POST array wanneer het als querystring is doorgestuurd (enctype:urlencodednogwat, standaard), of enctype:multipart/form-data-oid (bij bestanden uploaden). Als het in een andere indeling is, dan zal je het zelf moeten inlezen. Volgens mij kan dat via de php://input stream. Of via $HTTP_POST_DATA, al werkt die bij mij iig nooit.
Gebruik je jQuery? Zo ja, dan kan je toch $.post gebruiken? Zie eens naar Je ziet de output in Firebug zeg je, als het goed is kan je dan ook zien of de data verzonden is, als body (of gewoon data) van de request. In wat voor formaat is dat? Kan je dat eens kopieren en plakken hier?
PHP zelf kan die body omzetten in waardes in een $_POST array wanneer het als querystring is doorgestuurd (enctype:urlencodednogwat, standaard), of enctype:multipart/form-data-oid (bij bestanden uploaden). Als het in een andere indeling is, dan zal je het zelf moeten inlezen. Volgens mij kan dat via de php://input stream. Of via $HTTP_POST_DATA, al werkt die bij mij iig nooit.
Je kan het JSON.stringify() stuk weglaten, data accepteert ook objecten. Maar dit zou natuurlijk niets uit moeten maken.
Ik denk dat het komt door je datatypes en headers als JSON, je post de data niet op de juiste manier volgens mij.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
$.post(
'Backend/Ajax/Login/LoginHandler.php',
{ 'Data':
{ 'Username': $('[name="txtUsername"]').val(),
'Password': $('[name="txtPassword"]').val(),
'DailyToken': $('[name="txtDailyToken"]').val(),
'Captcha': $('[name="txtCaptcha"]').val()
}
},
function(json) {
console.log(json);
},
'json');
'Backend/Ajax/Login/LoginHandler.php',
{ 'Data':
{ 'Username': $('[name="txtUsername"]').val(),
'Password': $('[name="txtPassword"]').val(),
'DailyToken': $('[name="txtDailyToken"]').val(),
'Captcha': $('[name="txtCaptcha"]').val()
}
},
function(json) {
console.log(json);
},
'json');
Deze werkt. Echter rust mij nu nog de vraag, of het kan dat ik een login via json laat lopen. Sessies aanmaken etc etc word dan op de achtergrond gedaan. Of is er iets wat deze manier onveilig maakt?