Autor Zpráva
Alda
Profil *
Zdravím,

mohl by mi někdo poradit jak dostat MYSQL data do JavaScriptu?

Zkoušel jsem se to takto

<?php
....
$con = @mysql_connect($mysql_db_hostname, $mysql_db_user, $mysql_db_password,
 $mysql_db_database);

if (!$con) {
 trigger_error('Could not connect to MySQL: ' . mysql_connect_error());
}
$json = array();

$sql = "SELECT * FROM markers";
$result = mysql_query($con, $sql);

while($obj = mysql_fetch_array($result)) {
$json[] = $obj;
}

?>

<script>
function initialize()
{
var MYSQLdatas = <?php json_encode($json) ?>;
.....
}
</script>

ale když se snažím vypsat hodnoty, tak mi to nevypíše nic. Jak mám procházet tím objektem? Zkoušel jsem to pomocí MYSQLdatas[index].nazevSloupce a to my právě nevypsalo nic. Mohl by mi někdo poslat nějaké řešení?


Děkuji za odpověď
_es
Profil
Alda:
Asi by bolo dobré si v zdrojovom kóde v prehliadači pozrieť, čo PHP skript vygeneroval.
Alda
Profil *
PHP vrací tohle
string(431) "[{"0":"1","id":"1","1":"balabfldf","name":"ddjfbdvldjfd","2":"lorem ipsum,"address":"lorem ipsum","3":"13.695411","lat":"13.695411","4":"50.504982","lng":"50.504982","5":"default","type":"default"},{"0":"2","id":"2","1":"bldjfldfbdfl,"name":"bfkdjflhdlbadlf","2":"lorem ipsum,"address":"lorem ipsum","3":"16.524458","lat":"16.524458","4":"48.981186","lng":"48.981186","5":"default","type":"default"}]"

javascriptu to předávám takto
var markers = <?php echo json_encode($json); ?>;
var markers1 = JSON.parse(markers);
ale když zadám

alert(markers1[0].lat);
tak mi to nic nevypíše
Chamurappi
Profil
Reaguji na Aldu:
Jestli jsem to správně pochopil, proč voláš JSON.parse na něco, co není řetězec, ale už hotové JS pole? V markers už je to, co bys chtěl dávat do markers1, ne?
Alda
Profil *
Protože mi nefungovalo ani, když jsem zadal

markers[0].lat

proto jsem zkoušel ještě zavolat JSON.parse() a jako parametr jsem předal to co mám v proměnné markers, jestli mi to nevyřeší ten problém. Bohužel nevyřešilo.
_es
Profil
Alda:
Nejako to zamotávaš a nepíšeš dostatočne presne a zrozumiteľne v čom je vlastne problém. V [#1] píšeš o premennej MYSQLdatas, máš tam nejakú funkciu initialize (Niekde ju voláš? Ako?). Potom je zrazu problém s nejakou inou premennou. „PHP vracia“ znamená presne čo? To, čo bude vo výsledku nahradené za <?php json_encode($json) ?>, alebo niečo iné? Včítane toho string(431) a aj prvej a poslednej úvodzovky? „Nefungovalo“ znamená presne čo? Skús problém obmedziť na problém len v JS, aby v tom nebolo „zamontované“ PHP a MySQL.
Chamurappi
Profil
Reaguji na Aldu:
Funkce json_encode by se měla postarat o správné převedení do JS objektu. K tomu mi ale nepasuje, že v JSONu uvedeném v příspěvku [#3] jsou syntaktické chyby, konkrétně tam chybí ukončovací uvozovky:
"name":"ddjfbdvldjfd","2":"lorem ipsum,"address"
"1":"bldjfldfbdfl,"name":"bfkdjflhdlbadlf"
Je možné, že jsi tyto chyby způsobil až tady v diskusi, protože uváděný řetězec s JSONem nemá délku 431 bajtů… pokud je to skutečně tak, znamená to, že nám filtruješ symptomy, čímž snižuješ naše šance najít řešení. V takovém případě odmítám dále radit bez odkazu na živou ukázku.
Alda
Profil *
_es:
PHP vrací tohle

[{"0":"1","id":"1","1":"balabfldf","name":"ddjfbdvldjfd","2":"lorem ipsum,"address":"lorem ipsum","3":"13.695411","lat":"13.695411","4":"50.504982","lng":"50.504982","5":"default","type":"default"},{"0":"2","id":"2","1":"bldjfldfbdfl,"name":"bfkdjflhdlbadlf","2":"lorem ipsum,"address":"lorem ipsum","3":"16.524458","lat":"16.524458","4":"48.981186","lng":"48.981186","5":"default","type":"default"}]

to jsem si uložil do javascript pole dejme tomu s názvem MYSQLdatas
Nefunguje, znamená to, že když jsem chtěl například vypsat 50.504982 pomocí, tak jsem chtěl použít výpis pomocí
document.write(MYSQLdatas[0].lng)
ale nevypsalo mi to na stránku nic.


Chamurappi:

Tady jsou zdrojové kódy https://www.dropbox.com/s/g7um00fme3gq2ct/net2ftp-1407323880.zip

Živá ukázka je tady (pokud se nesnažím vypsat data) a tady (pokud se snažím vypsat data). Nad mapou je vždy výpis PHP proměnné pomocí var_dump
_es
Profil
Alda:
a tady (pokud se snažím vypsat data).
No a keď tam vymažeš var markers1 = JSON.parse(markers) a zmeníš alert(markers1[0].lat); na alert(markers[0].lat);, tak ti to (snáď) pôjde.

tak jsem chtěl použít výpis pomocí document.write(MYSQLdatas[0].lng)
ale nevypsalo mi to na stránku nic.
Viď Časté potíže, zajímavosti a poučné debaty » Psaní metodou document.write po načtení stránky maže stránku.
Chamurappi
Profil
Reaguji na Aldu:
tady (pokud se snažím vypsat data)
Tam to teď funguje. Předpokládám, že už jsi to asi opravil podle rady od _es


Reaguji na _es:
Kdyby používal document.write po načtení stránky, pravděpodobně by si nestěžoval, že se nevypsalo nic, ale že mu to zrušilo stránku.
Alda
Profil *
Už mi to funguje. Napsal jsem si ten javascript-ový a PHP kód od znova a už mi to fungovalo.

Ale děkuji za rady

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: