Javascript se ne izvede
8 naročnikov
8 naročnikov
Uporabljam klasičen način Ajaxa, po vnosu podatkov kličem JS funkcijo, katera pokliče PHP program. Ta generira HTML, ter vrne na ustrezen <DIV ID=xx></DIV>.
Med to vrnjeno HTML kodo je tudi JS, konkretno koda za Google Chart. Problem je, da se ta koda ne izvede, torej da se graf ne nariše. Tudi če je samo alert(??); se ne izvede. Če to kodo shranim v HTML datoteko in poženem, se JS izvede (sintaksa je torej pravilna).
Prosim za kak nasvet.
29 odgovorov
Iskal sem rešitev, da bi bilo vse v enem programu, ker... se operacije ne ponavljajo in ker je vse najlaže obvladljivo. Sedanja rešitev je precej blizu temu. En program pripravi vso HTML kodo z podatki in DIV-i za grafe, ter formira podatke za vsak graf:
$SESSION['sesswe'] = jsonencode($data);
Koda za grafe je na primarni strani, podatke pa črpa s pomočjo programa (za vsak graf poseben dvovrstični program - dva ukaza):
function chartwe() {
var jsonData = $.ajax({
url: "http://localhost/mocaacwe.php",
dataType:"json",
async: false
}).responseText;
.
.
in še mocaacwe.php
<?php
sessionstart();
echo $SESSION['sesswe'];
?>
V celotnem prispevku je kar nekaj predlogov, h katerim se bom še vrnil. Hvala vsem.
Zakaj ne bi vračal json_encode($data) v mocaacwe.php ? :)
Sorry, vendar po nepotrebnem izumljaš toplo vodo.
To da »izumljam toplo vodo« je zame bol pohvala kot kritika. JavaScript obvladam slabo, jQuery pa blizu nič. Torej iščem obstoječe rešitve (primere). V primeru Googlovih grafov na Googlovi strani https://google-developers.appspot.com/chart/interactive/docs/index.
Ne razumem, kaj me sprašuješ, oz. kaj misliš, da bi naj naredil drugače. V primerih grafov sem našel samo dva načina, kako posredovati podatke: ali so »zapečeni« v kodi, ali se »pripeljejo« s pomočjo klica programa. Program, ki se kliče z grafa, bi seveda lahko sam pripravil podatke, vendar bi ponovil operacije, ki jih je že naredil program, ki je pripravil podatke v HTML obliki.
Sprva je osnovni program pripravil tmp datoteke in ime zapisal v piškot, program ki se kliče z grafa pa dobil ime datoteke s piškota, jo prebral in posredoval podatke grafu. Zalomilo se je, ko sem selil na splet. Lokalno delam na Windows, gostovanje je na Linux. Nikakor nisem našel kje je področje za tmp datoteke. Rešitev z »session« je v tem primeru še boljša od tmp datoteke.
Kot rečeno stran je na spletu https://mortgagecalculatorwithpmi.com/mortgage-refinance-calculator/.
Verjetno bo bolj jasno, če se proba.
p.s.: ne počnite tega z MS IE (IE ima napako pri ON CHANGE http://www.quirksmode.org/dom/events/).
To da izumljaš toplo vodo je bila dobronamerna kritika. Na cilj se pride po več poteh, ti si pač izbral makadamsko pot skozi gozd preko dveh hribov, ker poznaš samo to :)
Malo heca. Tukaj si poglej primer:
https://developers.google.com/chart/interactive/docs/php_example
Zelo enostavno vse skupaj. Le v getData.php poskrbiš, da sestaviš JSON objekt s podatki ki jih graf potrebuje.
Tole dejansko razne preračune in primerjave pri hipotekarnih posojilih. Dejansko če so input parametri samo tisti trije gor bi to lahko en lep jQuery plugin shandlal in zrisal pomoje. Ampak lej če ti zadeva dela se ne preveč ubadat in iskat izboljšav, moje osebno mnenje. Raje delaj na novih produktih, ki bojo prinašal keš.. :)
@cruiser: točno ta primer uporabljam. Moj getData.php je mocaacwe.php – pripelje podatke v graf.
@wingback: tudi tvoj nasvet že uresničujem. Ravnokar sem prenesel naslednjo stran. Na prejšnji je bil poudarek na različnih načinih plačevanja kredita, sedaj je pa samo mesečno plačevanje, ki pa vključuje tudi davek, zavarovanje, prispevek HOA… So še težave, kot vedno.
Hvala za spodbudo obema!
Ja, samo namesto da podatke pripravljaš na prvi strani in jih shranjuješ v session, bi jih preprosto vrnil v php skripti. Če rabiš za to kak parameter, pa jih dobiš prekoGET ali POST variabl(isto kot si sedaj uporabil session).
Če boš programiral, se je dobro že na začetku naučiti/navaditi dobrih praks.