Op 1 of andere manier werkt de onderstaande ajax niet. heb het al eens een keer aan de hand gehad. Heeft iemand een idee wat er hier fout gaat?


<script>


var code = "test";
var paginanaam = "pagina1";


$.ajax({
url: 'save-content.php',
type: 'post',
						
data: {code:code,paginanaam:paginanaam},
datatype: 'html',
success: function(rsp){
location.reload();
alert("ajax uitgevoerd;");								
}
});


onderstaande save-content.php


<?php

$paginanaam = trim( $_REQUEST['paginanaam'] );
$code = $conn->real_escape_string($_REQUEST['code'] );

?>
Waaruit blijkt dat het niet wordt ingeladen? Wat zegt de developer console van je browser?
hoi arien. goede vraag. in het php bestand wordt de inhoud namelijk naar een bestand geschreven. althans dat zou het moeten doen. Maar dat gebeurd niet. daarom ga ik er vanuit dat er iets is gaan in ajax. onderstaande de gehele php code. vreemde is dat alle script op een andere pagina het wel doen. geen probleem wat het probleem kan veroorzaken.


?php

$paginanaam = trim( $_REQUEST['paginanaam'] );
$code = $conn->real_escape_string($_REQUEST['code'] );

$myFile = "import-database.php"; // or .php   
$fh = fopen($myFile, 'w'); // or die("error");  
fwrite($fh, $code);  
fclose($fh);  	


?>
Waarom gebruik je real_escape_string? Denk je dat de filehandler van PHP opeens zich identificeert als een MySQLi-adapter? :-P

En wat meldt je developer console in de Netwerk-tab over je request?
nou dat was een tip. normaal wordt er gehele html code in de variable opgeslagen etc.

[size=xsmall]Toevoeging op 24/04/2024 20:57:31:[/size]

en zonder escape_string ging dat wel eens fout. vandaar.
Lees eens goed wat [php]mysqli_real_escape_string[/php] doet, en vel opnieuw een oordeel. ;-)
Waar kont $conn trouwens vandaan?
$code = $conn->real_escape_string($_REQUEST['code'] )

Je doet een post maar controleert niet of er gePOST wordt. Je controleerd ook niet of de paginanaam wel is gePOST

<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
if(isset($_POST['code'], $_POST['paginanaam'])) {
$paginanaam = trim( $_REQUEST['paginanaam'] );//ongebruikte variabele wat doet dit hier?
$fh = fopen("import-database.php", 'w');
fwrite($fh, $_POST['code']);
fclose($fh);
}
}
?>
hoi arien.

elke pagina heeft een uniek nummer. deze is opgeslagen in de variable paginanaam. vandaar deze variable.
Maar even dat terzijde. bedankt voor je code. het werkt inderdaad nu. wat ik zo vreemd vind is dat dezelfde code wel werkt op een andere plek. Zal de code daar ook vervangen door die van jou. zoal ik kan lezen zorgt real escape string voor o.a. het weghalen van onnodige karakters in de content toch? ik sla namelijk html en pho code op in de variable. is trim dan de functie die ervoor zorgt dat de alles ook wordt meegenomen?
Vanuit PHP.net over de mysqli_real_escape_string() functie.


Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection.


Ik zie dat je niks in dit stukje code met MySQLi doet. Dus deze functie is onnodig.

Als je HTML onschadelijk wilt maken:
[php]htmlentities[/php] of [php]htmlspecialchars[/php]

Als je HTML wilt strippen:
[php]strip_tags[/php]

Maar normaal doe je dat bij de uitvoer. Je wilt het niet graag gestript of vermangeld opslaan.

Als je overtollige spatie's aan het begin en/of eind van een string wilt verwijderen:
[php]trim[/php]

Bekijk anders op php.net de String Functions.
hoi arien. bedankt voor de toelichting.
Kleine kanttekening nog ;-)


var code = 'test'
var paginanaam = 'pagina1'

$.ajax({
    url: 'save-content.php',
    type: 'post',
    data: { code: code, paginanaam: paginanaam },
    datatype: 'html',
    success: function (rsp) {
        location.reload() // door deze call wordt je pagina opnieuw geladen
        alert('ajax uitgevoerd') // dus dit statement heeft geen zin ;-)
    },
})

Reageren