En wát gaat er niet goed?quote:Op maandag 12 november 2012 12:17 schreef pascal08 het volgende:
..., maar zodra ik een query laat uitvoeren vanuit een ander PHP-bestand, dan gaat er iets niet goed. Het PHP-bestand stand-alone draaien werkt wel.
quote:Op maandag 12 november 2012 12:17 schreef pascal08 het volgende:
Ik heb met Bootstrap een typeahead veld gemaakt en ik heb de JS code onder aan m'n HTML pagina geschreven. Als ik dit doe werkt het wel:
[ afbeelding ]
..., maar zodra ik een query laat uitvoeren vanuit een ander PHP-bestand, dan gaat er iets niet goed. Het PHP-bestand stand-alone draaien werkt wel.
[ afbeelding ]SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Dit stukje klopt niet. De while-loop wordt voor elk resultaat uitgevoerd, en voor elk resultaat herdefiniëer je $array[] als de waarde uit de kolom "last_name". Als je in Chrome of Firebug het network request bekijkt (doe dit dan ook, leer de developer tools gebruiken, leer debuggen) zie je waarschijnlijk dat de PHP-pagina een JSON-object terugstuurt met daarin maar één achternaam.
1
2
3
4
5
6<?php
$mysql_query = mysql_query("SELECT * FROM `users` WHERE last_name LIKE '%$query%' ORDER BY `status` DESC LIMIT 15");
while($row = mysql_fetch_assoc($mysql_query)) {
$array[] = $row['last_name'];
}
?>
Ikzelf zou het zo doen:array_push is een functie waarmee je waardes aan een array kunt toevoegen. Deze code is niet getest overigens, maar zoiets als dit moet zeker werken.
1
2
3
4
5
6
7
8
9<?php
$array = array();
$mysql_query = mysql_query("SELECT * FROM `users` WHERE last_name LIKE '%$query%' ORDER BY `status` DESC LIMIT 15");
while($row = mysql_fetch_assoc($mysql_query)) {
array_push($array,$row['last_name']);
}
header('Content-type: application/json');
echo json_encode($return_array);
?>
Wat betreft je je JS-code, ik betwijfel of dit de juiste manier is om te bereiken wat je doet. De source van de typeahead lijkt mij een statisch element namelijk. Ik denk dat je een keydown event moet binden aan het veld waar je in typt, en in die event handler het source-attribuut moet updaten.
[ Bericht 6% gewijzigd door Merkie op 12-11-2012 12:42:43 ]2000 light years from home
Als ik 'm stand-alone via XAMPP draai, dan zie ik wel een JSON met 8 namen, elke keer wordt er toch gewoon een waarde aan de array toegevoegd?quote:Op maandag 12 november 2012 12:34 schreef Merkie het volgende:
[..]
[ code verwijderd ]
Dit stukje klopt niet. De while-loop wordt voor elk resultaat uitgevoerd, en voor elk resultaat herdefiniëer je $array[] als de waarde uit de kolom "last_name". Als je in Chrome of Firebug het network request bekijkt (doe dit dan ook, leer de developer tools gebruiken, leer debuggen) zie je waarschijnlijk dat de PHP-pagina een JSON-object terugstuurt met daarin maar één achternaam.
Ikzelf zou het zo doen:
[ code verwijderd ]
array_push is een functie waarmee je waardes aan een array kunt toevoegen. Deze code is niet getest overigens, maar zoiets als dit moet zeker werken.
Enne, voortaan inderdaad zeggen wat er niet goed gaat, lijkt me vrij essentiëel.
in de request en de reply daaropquote:Op maandag 12 november 2012 12:22 schreef pascal08 het volgende:
[..]
Ik heb 'm al in het JS-topic gepost.Waar moet ik precies naar kijken in de developer-console van Chrome?
Dit lijkt me inderdaad een goede optie, ik ga dat eens proberen.quote:Op maandag 12 november 2012 12:34 schreef Merkie het volgende:
Wat betreft je je JS-code, ik betwijfel of dit de juiste manier is om te bereiken wat je doet. De source van de typeahead lijkt mij een statisch element namelijk. Ik denk dat je een keydown event moet binden aan het veld waar je in typt, en in die event handler het source-attribuut moet updaten.
In het tabblad 'network' geeft 'ie wel een 404 fout, dus ik ben ook ergens weer verkeerd aan het linken, even checken...quote:Op maandag 12 november 2012 12:44 schreef GlowMouse het volgende:
[..]
in de request en de reply daarop
Je hebt gelijk, sorry. Dit is wat je moet doen denk ik.quote:Op maandag 12 november 2012 12:43 schreef pascal08 het volgende:
[..]
Als ik 'm stand-alone via XAMPP draai, dan zie ik wel een JSON met 8 namen, elke keer wordt er toch gewoon een waarde aan de array toegevoegd?
| 1 2 3 | $("#typeahead").on("keydown", function(){ $(this).typeahead({source: <hier je Ajax-functie>}); }); |
Ga ik direct proberen.quote:Op maandag 12 november 2012 12:48 schreef Merkie het volgende:
[..]
Je hebt gelijk, sorry. Dit is wat je moet doen denk ik.
[ code verwijderd ]
| 1 2 3 4 5 6 | $("#typeahead").on("keydown", function(){ $.ajax(bla).done(function(result) { var typeahead = $('#typeahead').typeahead(); typeahead.data('typeahead').source = result; }); }); |
F5 is genoeg, de ctrl is alleen nodig als je browsercache corrupt is.quote:
Ik moet nu steeds handmatig al m'n browsergegevens verwijderen, dan doet 'ie het wel.quote:Op maandag 12 november 2012 13:01 schreef GlowMouse het volgende:
[..]
F5 is genoeg, de ctrl is alleen nodig als je browsercache corrupt is.
Vandaar ook dat niemand in his right mind IE gebruikt als development browser.quote:Op maandag 12 november 2012 13:08 schreef Devv het volgende:
F5 werkt ook lang niet altijd. Vooral IE heeft er een handje van om bestanden vrolijk vast te houden.
In IE10 werken placeholders eindelijk wel.quote:Op maandag 12 november 2012 13:15 schreef KomtTijd... het volgende:
[..]
Vandaar ook dat niemand in his right mind IE gebruikt als development browser.
Je ontkomt er niet aan als je je site wilt testen in IE he. En je weet zelf net zo goed als ik dat een site nooit in één keer werkt in IEquote:Op maandag 12 november 2012 13:15 schreef KomtTijd... het volgende:
[..]
Vandaar ook dat niemand in his right mind IE gebruikt als development browser.
vooralsnog moet ik bij elke browser ctrl+f5 drukken om zeker te zijn dat alles vers van het net gehaald wordt en de cache ontweken wordt...quote:Op maandag 12 november 2012 13:01 schreef GlowMouse het volgende:
[..]
F5 is genoeg, de ctrl is alleen nodig als je browsercache corrupt is.
Uiteindelijk test je in alle browsers ja, maar voor de initiële ontwikkeling IE gebruiken, dan kom je wel met zulke kromme producten...quote:Op maandag 12 november 2012 13:24 schreef Merkie het volgende:
[..]
Je ontkomt er niet aan als je je site wilt testen in IE he. En je weet zelf net zo goed als ik dat een site nooit in één keer werkt in IE.
Elke browser (zie de tabel van 27 September 2010) stuurt If-Modified-Since headers mee bij een F5. Alleen als de webserver heel slecht is, is een F5 niet voldoende.quote:Op maandag 12 november 2012 13:41 schreef mschol het volgende:
[..]
vooralsnog moet ik bij elke browser ctrl+f5 drukken om zeker te zijn dat alles vers van het net gehaald wordt en de cache ontweken wordt... ongeacht of die corrupt is of niet...
een standaard apache installatie, en F5 is dan niet afdoende...quote:Op maandag 12 november 2012 13:45 schreef GlowMouse het volgende:
[..]
Elke browser (zie de tabel van 27 September 2010) stuurt If-Modified-Since headers mee bij een F5. Alleen als de webserver heel slecht is, is een F5 niet voldoende.
quote:F5 may give you the same page even if the content is changed, because it may load the page from cache. But Ctrl-F5 forces a cache refresh, and will guarantee that if the content is changed, you will get the new content.
Gewoon Ctrl + F5 gebruiken dus.quote:Op maandag 12 november 2012 13:47 schreef mschol het volgende:
[..]
een standaard apache installatie, en F5 is dan niet afdoende...
overigens vermeld jou link het volgende:
[..]
nee, niet.quote:
Apache stuurt standaard echt geen 304 terug.quote:Op maandag 12 november 2012 13:47 schreef mschol het volgende:
[..]
een standaard apache installatie, en F5 is dan niet afdoende...
Pardon? Dat stukje werkt wel degelijk hoor. Sterker nog uit de php-manual van array_push:quote:Op maandag 12 november 2012 12:34 schreef Merkie het volgende:
[..]
[ code verwijderd ]
Dit stukje klopt niet. De while-loop wordt voor elk resultaat uitgevoerd, en voor elk resultaat herdefiniëer je $array[] als de waarde uit de kolom "last_name". Als je in Chrome of Firebug het network request bekijkt (doe dit dan ook, leer de developer tools gebruiken, leer debuggen) zie je waarschijnlijk dat de PHP-pagina een JSON-object terugstuurt met daarin maar één achternaam.
Ikzelf zou het zo doen:
[ code verwijderd ]
array_push is een functie waarmee je waardes aan een array kunt toevoegen. Deze code is niet getest overigens, maar zoiets als dit moet zeker werken.
Wat betreft je je JS-code, ik betwijfel of dit de juiste manier is om te bereiken wat je doet. De source van de typeahead lijkt mij een statisch element namelijk. Ik denk dat je een keydown event moet binden aan het veld waar je in typt, en in die event handler het source-attribuut moet updaten.
quote:array_push() treats array as a stack, and pushes the passed variables onto the end of array. The length of array increases by the number of variables pushed. Has the same effect as:
<?php
$array[] = $var;
?>
"But Ctrl-F5 forces a cache refresh, and will guarantee that if the content is changed, you will get the new content."quote:Op maandag 12 november 2012 13:56 schreef GlowMouse het volgende:
[..]
nee, niet.
[..]
Apache stuurt standaard echt geen 304 terug.
Bij IE moet je er nooit vanuit gaan dat het doet wat het zou moeten doen.quote:Op maandag 12 november 2012 14:02 schreef pascal08 het volgende:
[..]
"But Ctrl-F5 forces a cache refresh, and will guarantee that if the content is changed, you will get the new content."
Dat is toch precies wat ik wil?
en toch wordt alles uit cache gehaald als ik geen ctrl + f5 gebruik...quote:Op maandag 12 november 2012 13:56 schreef GlowMouse het volgende:
[..]
nee, niet.
[..]
Apache stuurt standaard echt geen 304 terug.
Was ik al achter ja. Ik was met die syntax niet bekend.quote:Op maandag 12 november 2012 14:02 schreef Rockfire het volgende:
[..]
Pardon? Dat stukje werkt wel degelijk hoor. Sterker nog uit de php-manual van array_push:
[..]
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | $(document).ready(function() { $('#typeahead').keyup(function() { var search = $(this).attr('value'); $.post('/folder/ajax/search.php', {search:search}, function(data) { $('#result').html(data); $('#result').click(function() { var result_value = $(this).text(); $('#typeahead').attr('value', result_value); $('#result').html(''); }); }); }); }); |
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |