AJAX of niet

Status
Niet open voor verdere reacties.

JeroenE

Terugkerende gebruiker
Lid geworden
20 mrt 2005
Berichten
1.950
Voor een van mijn websites heb ik nogal wat formuliertjes gemaakt zodat ik voor elk deeltje info dat moet gewijzigd worden slechts een heel beperkte hoeveelheid data hoef te gebruiken van de bezoeker.
Momenteel doe ik dit met AJAX maar ik stel mij de vraag als die wel veilig genoeg is.
Hier een voorbeeld van het script dat ik gebruik. (nog oud javascript, dus ik moet het toch herschrijven)
Zijn er zaken die je hieraan zou veranderen of is het goed zoals het is?

Code:
<script>
function stuur(plaats, verzoek, gegevens) {
  var parameters = "verzoek=" + verzoek;
  var patroon = /[^-_.?,;:!()a-zA-Z0-9ãõñâêûîôäëÿüïöáéúíóàèùìòçsÃÕÑÂÊÛÎÔÄËÜÏÖ ]/;
  switch (verzoek) {
    case "verzoek1":
      parameters += "&naam=" + gegevens;
      break;
    case "verzoek2:
      var opmerkingen = patroon.test(document.getElementById("opmerkingen").value);
      if (patroon.test(opmerkingen)) {
        alert("Je gebruikte tekens die niet toegestaan zijn. Enkel de volgende tekens zijn toegestaan: ^-_.?,;:!()a-zA-Z0-9ãõñâêûîôäëÿüïöáéúíóàèùìòçsÃÕÑÂÊÛÎÔÄËÜÏÖ en spaties.");
        return false;
      } else {
        parameters += "&opmerkingen=" + opmerkingen;
      }
      break;
    case "verzoekn":
      ...
      ...
      ...
  }
  if (window.XMLHttpRequest) {
    xhttp = new XMLHttpRequest();
  } else {
    xhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  xhttp.open("POST", "getcontent.php", false);
  xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
      document.getElementById(sdiv).innerHTML = xhttp.responseText;
    }
  }
  xhttp.send(parameters);
}
</script>

Dit zorgt er wel voor dat ik bij grotere formulieren "document.getElementById("id").value" ettelijke keren na elkaar dien te gebruiken, wat ik natuurlijk niet graag zie in mijn code omdat het het geheel nogal onoverzichtelijk maakt.

Is deze code voldoende veilig, gebruik ik beter een andere code of gewoon een form submit waarvoor ik dan wel voor elke plaats waar een formuliertje komt een aparte iframe gebruik?
 
Laatst bewerkt:
Zelf ben ik fan van AJAX. Je gebruikt POST en valideert in het php bestand, dat lijkt mij behoorlijk veilig.

En je hebt er ook nog een antispam idee in zitten: var patroon = /[…….]/ :)
Een +1 voor het gebruik van vanilla ipv jquery.

Kijk ook eens naar de ajax.js op https://github.com/tedshd/ajax/ met een voorbeeld.
In deze ajax.js zou ik alleen dit aanpassen
Code:
try {
  var jsonToText = JSON.parse(xdr.responseText);
  success(jsonToText);
} catch(error) {
  // console.log('error parsing json');
}


document.getElementById("id").value
Je kan ook dit gebruiken als het er veel zijn. Geef ze allemaal dezelfde class en dan:
Code:
var itemObj = document.querySelectorAll(".class");
var itemLen = itemObj.length;
var i;
for (i = 0; i < itemLen; i++) {
   ...
}
 
Laatst bewerkt:
Dankjewel Bron voor het antwoord.
Ik ben er nu pas toe gekomen hier iets mee te doen, dus fingers crossed.
Mijn eerste gevoel zegt dat jouw tweede oplossing, met allemaal dezelfde class te geven, de beste zal zijn.
Ik laat nog weten wat ik zal gebruikt hebben
 
Zoals ik dus al zei, is de tweede oplossing de beste gebleken en werkt alles perfect.
Dankjewel, bron, voor het delen van je kennis
 
Onthoud ook dat AJAX een middel* is, en geen doel ;-)


* Ja, en ook nog eens een schoonmaakmiddel... ;)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan