[PHP / JS] Array importeren vanaf server

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Ik ben bezig met een javascriptje dat onder andere een array met producten nodig heeft om te werken. Deze array wil ik van de server halen mbv het XMLHttpRequest object:
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
25
26
27
28
29
30
    var http = createRequestObject();

    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) {
        alert(http.responseText);
      }
    }
    
    function init() {
      sendRequest('http://localhost/test/products.php?id=1');
    }

Op de server ziet products.php er zo uit:
PHP:
1
2
3
4
5
6
7
8
9
10
$products = $_GET['id'];

switch ($products) {
  case 1:
    echo "['appels', 'peren', 'bananen', 'kersen']";
    break;
  case 2:
    echo "['koeken', 'broden', 'taarten']";
    break;
}

Ik verwachtte dat de alert(http.responseText) de string "['appels', 'peren', 'bananen', 'kersen']" zou opleveren. Dat gebeurt niet: in de alertbox verschijnt mijn complete javascript. Wat doe ik (aan de serverkant waarschijnlijk) verkeerd?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

En als je gewoon http://localhost/test/products.php?id=1 in je browser aanroept, krijg je dan wel de output die je verwacht?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Kun je de array niet al echo-en in het Javascript, of heb je hem dan nog niet tot je beschikking?

Anders zou je het kunnen echo-en als "'appels', 'peren', 'bananen', 'kersen'" waaridoor je in je javascript
code:
1
var producten = new Array(http.responseText);

kunt gaan doen.

Acties:
  • 0 Henk 'm!

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Sorry!! Ik was zo gefocused op de code zelf, dat ik het meest voor de hand liggende vergat: ik had products.php inmiddels hernoemd naar getProducts.php. Excuses dat ik hiervoor een topic moet openen. Mag wat mij betreft op slot. Bedankt, crisp!

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."