Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[JS] Formulier data versturen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mensen,

Ik heb een pagina met allemaal winkelwagen-items.
Bij deze items staat een 'aantal veld' (text).
Als dit veld aangepast wordt en het formulier wordt verstuurd moet het via AJAX ge-update wordt.
Dit stukje AJAX wordt aan het eind aangeroepen zodat de query_string als post kan worden ontvangen in PHP.

Het script haalt alle input velden op en kijkt daarna of in het de veld naam 'cart_num_products' voorkomt (daarna komt het product id)

Het probleem is echter dat ik steeds de volgende foutmelding krijg (Firebug):
[i]input has no properties (regel 36 == regel 9 hieronder)

Hier het script:
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 cart_update()
{
    var input = document.getElementsByTagName('input');
    var query_string = '';
    for(i = 0; i <= input.length; i++)
    {
        /* Kijk of het wel een update-veld is.
         */
        if(input[i].name.indexOf('cart_num_products') != -1)
        {
            /* Voeg de waarden als array toe aan de query string die met post verstuurd kan worden.
             */
            var ampers = '&';
            if(i == input.length)
            {
                ampers = '';
            }
            query_string = 'num_products[' + i +'][' + input[i].id + ']=' + input[i].value + ampers;
        }
    }
    /* Verstuur de gegevens naar step2.php zodat het winkelwagentje ge-update kan worden.
     */
    POSTRequest('modules/order/step2.php', query_string, 'CONTENT_CENTER');
}


En het HTML veld:
PHP:
1
<input id="<?php echo $cart['productid']; ?>"  type="text" name="cart_num_products_<?php echo $cart['productid']; ?>" value="<?php echo $cart['aantal']; ?>" />

  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
Verwijderd schreef op vrijdag 10 augustus 2007 @ 16:03:
JavaScript:
1
    for(i = 0; i <= input.length; i++)
input is een array, arrays beginnen bij het tellen met 0. Dus een array met 1 element heeft alleen een bestaande waarde bij index 0. De .length is echter 1, immers hij heeft 1 element, hij is niet leeg.

Wat je nu doet is de loop door laten gaat totdat i de lengte van input heeft. In het bovengenoemde voorbeeld zou dat 1 zijn, terwijl we net hebben vastgesteld dat er alleen een waarde voor index 0 is, en niet voor 1.

Daarom kan hij bij de laatste ronde van de for-lus geen element vinden. Als je <= verandert in < dan houdt de lus 1x eerder op.