Toon posts:

[XMLHttpRequest] Hoe alleen data verzenden?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Normaal gesproken gebruik ik onderstaande functies om zonder refresh een connectie naar een server te leggen:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    function createRequestObject() {
      if (window.XMLHttpRequest) {
        ro = new XMLHttpRequest();
      }
      else if (window.ActiveXObject) {
        ro = new ActiveXObject("Microsoft.XMLHTTP");
      }
      else {
        ro = false;
      }
      return ro;
    }

    function sendRequest(url) {
      http.open('get', url);
      http.onreadystatechange = handleResponse;
      http.send(null);
    }

    function handleResponse() {
      if (http.readyState == 4 && http.status == 200) {
        // do stuff with http.responseText
      }
    }

Maar deze constructie gaat er altijd vanuit dat er data terug komt van de server, die verwerkt moet worden bij de client. Als ik nu alleen data naar de server wil sturen, moet ik dan deze functies aanpassen en expliciet aangeven dat er niets met een eventuele reaktie hoeft te worden gedaan? Met andere woorden, moet deze regel niet optioneel worden?
code:
1
      http.onreadystatechange = handleResponse;

Een voorbeeld van wat ik bedoel is het geval waarin ik de gebruiker, voor statistieken te verzamelen ofzo, hun voornaam laat submitten via een textfield via een createRequest. Deze naam moet dan opgeslagen worden en klaar. Er hoeft geen informatie terug over welke divs met welke content moeten worden geupdate:
code:
1
      sendRequest('http://www.mijnsite.com/verzamelaar.php?naam=Dirk');

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:25

Janoz

Moderator Devschuur®

!litemod

Als je niet wilt dat er een callback functie aangeroepen wordt, dan laat je die gewoon leeg of definieer je die niet. Als je die regel die je aangeeft weg laat dan zal er inderdaad niks gebeuren met het resultaat.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Er zijn requests waarbij ik een resultaat teruggeef, wat afgehandeld moet worden in handleResponse(), maar er zijn ook requests, waarbij er geen handeling hoeft te worden verricht. Hoe kan ik beide gevallen in een functie afvangen? Moet ik de server een false laten teruggeven en daarop controleren oid?

  • André
  • Registratie: Maart 2002
  • Nu online

André

Analytics dude

Je kunt de server een 404 laten teruggeven wanneer er niets hoeft te gebeuren en een 200 wanneer dat wel moet. Met de http.status kun je dat dan afvangen.

  • keisersose
  • Registratie: Maart 2003
  • Laatst online: 29-05 17:34
Zou geen 404 gaan terugsturen, dan moet je later met het eventueel implementen van foutafhandeling weer gaan doen.
Je zou aan de sendRequest een (optionele) boolean parameter kunnen meegeven of je wel of niet de handleResponse functie will aanroepen (of in plaats van handleResponse een lege dummy functie laten aanroepen)

@edit: Of je zou eventueel in plaats van de '200 OK' header iets kunnen sturen als '200 OK (AJAX_DOE_NIETS)' wat je met http.statusText wel weer kan afvangen. (wel is gedaan om meerdere requests 'tegelijk' te doen, ID heen en weer sturen en door dezelfde functie te laten afhandelen, zo wist deze functie om welke request het ging)

[ Voor 34% gewijzigd door keisersose op 21-02-2007 00:11 ]