& verschijnt niet
Hoi,
ik heb een soort ajax edit systeempje gemaakt. Je klikt op een edit knopje en dan kun je meteen je reacties aanpassen en opslaan en het resultaat krijg je meteen te zien. Het werkt verder prima. Ik kwam er alleen achter dat hij het '&' karakter niet door laat. Dus als ik het typ dan zie je hem niet meer in de db en alle tekst erna niet. Volgens mij komt dit omdat je de post vars meestuurt als :
Wat doe ik verkeerd en hoe kan ik dat het beste oplossen?
ik heb een soort ajax edit systeempje gemaakt. Je klikt op een edit knopje en dan kun je meteen je reacties aanpassen en opslaan en het resultaat krijg je meteen te zien. Het werkt verder prima. Ik kwam er alleen achter dat hij het '&' karakter niet door laat. Dus als ik het typ dan zie je hem niet meer in de db en alle tekst erna niet. Volgens mij komt dit omdat je de post vars meestuurt als :
Code (php)
1
<input type=\"button\" onclick=\"savePost(" . $_GET['id'] . ",'nieuwepost='+ document.editforumposts" . $_GET['id'] . ".nieuwepost" . $_GET['id'] . ".value + '&nieuwetitel='+ document.editforumposts" . $_GET['id'] . ".nieuwetitel" . $_GET['id'] . ".value)\" value=\"Opslaan\">
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
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function savePost(str, comment) {
createXMLHttpRequest();
var url = "ajax/editforumpost.php?id="+str;
url=url+"&sid="+Math.random();
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(comment);
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
parseResults();
}
}
else {
document.getElementById("post"+str).innerHTML=" Bezig met opslaan";
}
}
function parseResults() {
document.getElementById("post"+str).innerHTML=xmlHttp.responseText;
}
}
createXMLHttpRequest();
var url = "ajax/editforumpost.php?id="+str;
url=url+"&sid="+Math.random();
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(comment);
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
parseResults();
}
}
else {
document.getElementById("post"+str).innerHTML=" Bezig met opslaan";
}
}
function parseResults() {
document.getElementById("post"+str).innerHTML=xmlHttp.responseText;
}
}
Wat doe ik verkeerd en hoe kan ik dat het beste oplossen?
Gewijzigd op 01/01/1970 01:00:00 door Henk PHP
Heb je al eens & geprobeerd in plaats van &?
Komt er ook niet doorheen
Volgens mij parse jij het bericht dat jij met AJAX verstuurd naar editforumpost.php op '&', of niet? Als dat jouw probleem is, misschien moet je dan een andere 'splitter' zoeken in je bericht, of verstuur de variabelen mee als $_GET variabele.
Edit: dit wordt als bericht verstuurd:
'nieuwepost=Dit is een voorbeeldbericht dat moet worden gewijzigd&nieuwetitel=Dit is de nieuwe titel
Jij split deze waarschijnlijk m.b.v. explode, maar wanneer nieuwepost een '&' als waarde heeft wordt de request verkeerd geparsed.
Edit: dit wordt als bericht verstuurd:
'nieuwepost=Dit is een voorbeeldbericht dat moet worden gewijzigd&nieuwetitel=Dit is de nieuwe titel
Jij split deze waarschijnlijk m.b.v. explode, maar wanneer nieuwepost een '&' als waarde heeft wordt de request verkeerd geparsed.
Gewijzigd op 01/01/1970 01:00:00 door Patrick Niezen
Een tekst met breaks en alles meesturen als GET lijkt me nou niet echt ideaal, denk ik.
Dit is trouwens het stukje code in editforumpost.php
Dit is trouwens het stukje code in editforumpost.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if($_SERVER['REQUEST_METHOD'] == "POST")
{
////////controleren if first post
$controleersql = "SELECT id FROM forumtopics WHERE firstpost = '" . mysql_real_escape_string($_GET['id']) . "'";
$controleerquery = mysql_query($controleersql) or die (mysql_error());
if(mysql_num_rows($controleerquery) == 1)
{
$sql5 = "UPDATE forumtopics SET titel = '" . mysql_real_escape_string($_POST['nieuwetitel']) . "' WHERE firstpost = '" . mysql_real_escape_string($_GET['id']) . "'";
$uitvoeren5 = mysql_query($sql5) or die (mysql_error());
}
$sql = "UPDATE forumposts SET bericht = '" . mysql_real_escape_string($_POST['nieuwepost']) . "', titel = '" . mysql_real_escape_string($_POST['nieuwetitel']) . "' WHERE id = '" . mysql_real_escape_string($_GET['id']) . "'";
$uitvoeren = mysql_query($sql) or die (mysql_error());
echo smileys(nl2br(htmlspecialchars(stripslashes($_POST['nieuwepost']))));
;
}
{
////////controleren if first post
$controleersql = "SELECT id FROM forumtopics WHERE firstpost = '" . mysql_real_escape_string($_GET['id']) . "'";
$controleerquery = mysql_query($controleersql) or die (mysql_error());
if(mysql_num_rows($controleerquery) == 1)
{
$sql5 = "UPDATE forumtopics SET titel = '" . mysql_real_escape_string($_POST['nieuwetitel']) . "' WHERE firstpost = '" . mysql_real_escape_string($_GET['id']) . "'";
$uitvoeren5 = mysql_query($sql5) or die (mysql_error());
}
$sql = "UPDATE forumposts SET bericht = '" . mysql_real_escape_string($_POST['nieuwepost']) . "', titel = '" . mysql_real_escape_string($_POST['nieuwetitel']) . "' WHERE id = '" . mysql_real_escape_string($_GET['id']) . "'";
$uitvoeren = mysql_query($sql) or die (mysql_error());
echo smileys(nl2br(htmlspecialchars(stripslashes($_POST['nieuwepost']))));
;
}
Ah... ik wist niet dat de parameter van xmlHttp.send(param) als variabelen over de $_POST werden gestuurd.
Het enige wat ik hier kan bedenken is het replacen van alles voortkomens van '&' in de variabelwaarden verwisselen met '&', zoals Jan zei...
Leuke functie: http://www.w3schools.com/jsref/jsref_encodeURI.asp -> misschien die op je variabelen loslaten voor het versturen.
Het enige wat ik hier kan bedenken is het replacen van alles voortkomens van '&' in de variabelwaarden verwisselen met '&', zoals Jan zei...
Leuke functie: http://www.w3schools.com/jsref/jsref_encodeURI.asp -> misschien die op je variabelen loslaten voor het versturen.
Gewijzigd op 01/01/1970 01:00:00 door Patrick Niezen
Thanks, ik zal het morgen even uit proberen.
Volgens mij moet ik dan wel encodeURIComponent moet gebruiken aangezien encodeURI & wel doorlaat en encodeURIComponent niet.
Toch bedankt Patrick! Ik laat nog wel weten of het gelukt is ;)
Volgens mij moet ik dan wel encodeURIComponent moet gebruiken aangezien encodeURI & wel doorlaat en encodeURIComponent niet.
Toch bedankt Patrick! Ik laat nog wel weten of het gelukt is ;)




