Problemen met getJSON

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Davy Carmans

Davy Carmans

10/09/2013 20:34:10
Quote Anchor link
Hallo,

ik weet niet of het thuis hoort in het PHP forum, dus alvast sorry als het niet zo is.

Ik ben in een hidden DIV aan het proberen om een selectie veld op te bouwen op basis van een selectie in een andere selectievak.

Ik krijg helaas mijn getJSON niet aan het werken.
Code (js)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<script type="text/javascript" charset="utf-8">
$(function(){
    $("#mat_type").change(function(){
        $.getJSON("select.php",{mat_type: $(this).val(), ajax:'true'}, function(j){
            var options = '';
            for (var i = 0; i < j.length; i++) {
                options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
            }

            $("#mat_naam").html(options);
        });
    });
});
</
script>

De code van mijn select.php file is :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
require_once('inc/mysql.class.php');
require_once('inc/global.inc.php');

session_start();

if (isset($_GET['mat_type'])) {
    echo createoptions("materiaal" , "ID" , "Benaming" , "Type" , $_GET['mat_type'], $db);
}

function
createoptions($table , $id , $field , $condition_field , $value , $db)
{

    $sql = sprintf("select * from $table WHERE $condition_field=%d ORDER BY $field" , $value);
    $res = $db->query($sql);

    if ($res->size() > 0) {
        while ($a = $res->fetch())
        $out[] = "{optionValue: {$a[$id]}, optionDisplay: '$a[$field]'}";
        return "[" . implode("," , $out) . "]";
    }
else
        return "[{optionValue: -1 , optionDisplay: 'No result'}]";
}

?>


Als ik de functie uitvoer, dan gebeurt er eigenlijk niks. Mijn selectie veld wordt niet ingevuld.

Nochtans is de response dit :

[{optionValue: 31, optionDisplay: 'Afplakband Fineer'},{optionValue: 33, optionDisplay: 'Afplakband Fineer'},{optionValue: 30, optionDisplay: 'Afplakband Melamime'}]

Aangezien ik al gelezen had over problemen met de getJSON functie, probeerde ik het even met $.get.
Ik krijg nu even goed deze response terug :

[{optionValue: 31, optionDisplay: 'Afplakband Fineer'},{optionValue: 33, optionDisplay: 'Afplakband Fineer'},{optionValue: 30, optionDisplay: 'Afplakband Melamime'}]

Maar, op dat moment verandert de inhoud van mijn selectieveld WEL... helaas allemaal "undefined" values, maar er gebeurt tenminste wat.

Iemand enig idee wat ik mis doe ?

Vriendelijke groeten en alvast bedankt,

Davy

Even de javascript ook tussen de code-tags gezet.[/modedit]
Gewijzigd op 10/09/2013 22:02:02 door Nick Dijkstra
 
PHP hulp

PHP hulp

17/11/2024 20:48:05
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/09/2013 21:07:12
Quote Anchor link
Als eerste moet je wel even de JQuery library includen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</head>
 
Davy Carmans

Davy Carmans

10/09/2013 21:20:13
Quote Anchor link
Frank, die zit er al in... Had alleen de belangrijke stukken code gecopieerd...
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/09/2013 21:32:41
Quote Anchor link
waarom niet

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function createoptions($table , $id , $field , $condition_field , $value , $db)
{

    $sql = sprintf("select * from $table WHERE $condition_field=%d ORDER BY $field" , $value);
    $res = $db->query($sql);

    if ($res->size() > 0) {
        while ($a = $res->fetch())
            $out[] = $a;
    }

    return json_encode($out);
}

?>
Gewijzigd op 10/09/2013 21:33:04 door Frank Nietbelangrijk
 
Davy Carmans

Davy Carmans

10/09/2013 21:39:09
Quote Anchor link
Frank,

1: Omdat ik niet wist dat ik die $a daarna nog kon filteren.
2: Omdat ik de code zo als voorbeeld had gevonden online
3. Omdat ik de json_encode functie heel erg weinig terugvond in mijn Google zoektocht.

Hoe dan ook, jouw aanpassingen, hoe klein ook, hebben het probleem opgelost !
Ik ben ZOOOOOOOOOOOOOOOOO dankbaar... Daar zat ik nu al heel wat uren naar te zoeken...

Ik moet je echt eens mee nemen voor een goede pint ! :-)

Vriendelijke groeten en 10000x bedankt.

Davy
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/09/2013 21:58:44
Quote Anchor link
haha Davy die staat genoteerd. das's alvast één pintje :p

maar het was geen moeite hoor ;)


Toevoeging op 10/09/2013 22:01:30:

By the way,

gooi ook even netjes een JSON header er uit bovenin in select.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
header('Content-type: application/json');
?>
 
Davy Carmans

Davy Carmans

10/09/2013 22:28:10
Quote Anchor link
Frank,

heb ik gedaan... Bedankt, ook voor deze tip...
Volgens mij had je al een pintje verdiend, dus deze komt er dan nog bij...

Ik heb nog zo veel vragen, maar leer zoveel bij van dit forum...

Groetjes,

Davy
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.