Javascript se ne izvede
 
jj012345 21. okt 2015 10:46:37 Pridružen od:
16. avg 2012
82 objav
13 13 1
#11

Verjetno bo to rešitev, ker šele sedaj opažam na sliki, da znesek na osnovni strani (Monthly annuity) in znesek v vrnjeni tabeli (Payment) nista enaka. Kar pomeni, da se graf nariše v predhodne podatke, potem pa ga prekrijejo novi podatki. Graf je od gornji podatkov, podatki ob njem pa od prehodnih. Poročam, ko bom naredil.


všeč(0) ni všeč(0) spam(0)
 
jj012345 21. okt 2015 12:22:54 Pridružen od:
16. avg 2012
82 objav
13 13 1
#12

Očitno sem se prezgodaj veselil, da vidim luč na koncu tunela. Dejstvo je, da imam graf (kodo) že sedaj na osnovni strani… Glede na prejšnje ugotovitve, sem postavil sleep(1000) pred klicanje drawChart(). Funkcija sleep ustavi vso izvajanje, tudi funkcije, ki so bile klicane pred tem (izračun in klicanje PHP z vrnitvijo podatkov). Prestavil sem sleep v funkcijo drawChart, enako vse stoji in se po premoru izvede v istem vrstnem redu: torej graf pred podatki s strežnika. Kakšen nasvet prosim.



function sleep(milliseconds) {

var start = new Date().getTime();

for (var i = 0; i < 1e7; i++) {

if ((new Date().getTime() - start) > milliseconds){

break;

}

}

}


všeč(0) ni všeč(0) spam(0)
 
wingback 21. okt 2015 12:57:49 Pridružen od:
19. maj 2013
334 objav
224 14 3
#13

Zakaj enostavno tam kjer nastavis $("div").html(serverResponse); za temle ne kličeš še funkcije drawChart(); ... Verjetno nekje ko prepišeš html, ki si ga dobil od strežnika tudi pushneš not v div.. Če to nardiš samo še enkrat kliči draw funkcijo..


všeč(1) ni všeč(0) spam(0)
 
cruiser 21. okt 2015 13:08:51 Pridružen od:
5. mar 2010
239 objav
275 16 3
#14

Jaz mislim da si se zadeve lotil z napačnim pristopom.

Kako bi jaz naredil:

1. Komplet ta spodnji DIV bi skril pri prvem loadu, bi pa hkrati že pripravil tabelo in vsa ta polja, prav tako div za graf itd

2. na ajax success bi potem iz prejetega JSON napolnil polja v tej tabeli preko jQuery

3. Poklical chart api s prejetimi podatki, da se izriše graf

4. prikazal spodnji div



Če tega ne moreš narediti, poizkusi mogoče z dinamičnim insertanjem iframe-a v spodnji div (npr da ima div id=graphdiv, v str je pa URL do strani, ki renderira to spodnjo tabelo):

$("#graphdiv").html("<iframe src='"+str+"'></iframe>");


všeč(1) ni všeč(0) spam(0)
// Senior software engineer, marketer and entrepreneur. Need help ? Let me know -> http://www.krevh.com/contact/
 
jj012345 21. okt 2015 13:47:12 Pridružen od:
16. avg 2012
82 objav
13 13 1
#15

@wingback

Če želim imeti graf(e) med podatki, ki pridejo s strežnika, mora z njimi priti tudi ustrezni DIV… Poskusil sem z dva klica funkcije za graf, rezultat kot da bi klical enkrat. Kopiral sem funkcijo pod drugim imenom in klical eno za drugo – podobno, kot da kličem samo eno. Ko dam sleep v prvo – kot da se izvede samo prva (samo en premor), dam sleep samo v drugo – kot da se izvede samo druga, ko dam sleep v obe – kot da se izvede samo ena…


všeč(0) ni všeč(0) spam(0)
 
wingback 21. okt 2015 15:32:20 Pridružen od:
19. maj 2013
334 objav
224 14 3
#16

Sem šel dejansko kodo pogledat zdej :) Če prav vem je pri XMLHttpRequest "onload", ko se dejansko konča klic. Jaz bi na tvojem mestu namesto onreadystatechange al kaj je že, dal onload in v delu funkcije kjer je document.getElementById("txtHint1").innerHTML=xmlhttp.responseText;

dodal še drawChart().



Hope will help. :)


všeč(1) ni všeč(0) spam(0)
 
jj012345 21. okt 2015 16:23:43 Pridružen od:
16. avg 2012
82 objav
13 13 1
#17

@wingback



DELA!



Sicer ne vem zakaj... kar me ni še povsem osrečilo. Na strani bo 7+1 (7 enakih in en skupni) graf. Mislim da bo šlo tako, da bo PHP formiral podatke z ustreznimi DIV-i, ter JSON datoteke z podatki za vsak graf. Vsak graf bo imel svojo funkcijo, ki bo klicala svoj PHP, ki bo samo prebral podatke z formiranih datotek, nato narisala graf.



Hvala vsem, če zašteka, bom pa spet...


všeč(0) ni všeč(0) spam(0)
 
ernest1a 25. okt 2015 08:50:51 Pridružen od:
27. feb 2007
335 objav
172 8 1
#18

Malo off topic. Ni mi jasno ko pravite da se javascript, ki ga vrne response, ne izvaja. Imam kodo, ki preko ajax klica prikaže primeren popup. Vsak popup ima svojo kodo in ta koda vsebuje tudi javascript. Do sedaj se mi je ta koda vedno izvajala. V čemu je razlika, da meni dela?


jQuery.ajax({
type: "POST",
url: urlAction,
data:"",
success: function(response){
jQuery("body").append(response);
}
});
všeč(1) ni všeč(0) spam(0)
 
jj012345 27. okt 2015 14:35:05 Pridružen od:
16. avg 2012
82 objav
13 13 1
#19

Se opravičujem za pozen odgovor.



@ernest1a hvala za tvojo izkušnjo. Če bi mi uspelo to uporabit, bi mi večkrat prišlo prav.



Stran sedaj deluje (po ukrepih, ki jih je predlagal @wingback) in je tudi na spletu. So težave z IE, ki izvaja input onchange="Func()" type="range" drugače kot drugi (Croma, FF in Opera). Ko vlečemo drsnik se ob vsaki spremembi kliče funkcijo, ne šele, ko drsnik spustimo. Zato pogosto zašteka. Razmišljam o zmanjšanju števila grafov… Če se malo pošalim, zdaj pri IE deluje celo preveč.


všeč(0) ni všeč(0) spam(0)
 
jj012345 27. okt 2015 15:12:02 Pridružen od:
16. avg 2012
82 objav
13 13 1
#20

Pošiljam PHP skripto. Če jo shraniš na strežnik in pokličeš LOCALHOST/skripta.php , boš dobil graf.

Poskusi to izvesti z Ajax-em.




<?php

echo '<script type="text/javascript" src="https://www.google.com/jsapi"></script>'.chr(13).chr(10);

echo " <script type='text/javascript'>".chr(13).chr(10);

echo " google.load('visualization', '1', {packages:['corechart']});".chr(13).chr(10);

echo " google.setOnLoadCallback(drawChart);".chr(13).chr(10);

echo " function drawChart() {".chr(13).chr(10);

echo " var data = google.visualization.arrayToDataTable([".chr(13).chr(10);

echo " ['Annuity (Month)', 'Interest', { role: 'style' } ],".chr(13).chr(10);

echo "['Monthly',121674.8,'#5D8BB7'],";

echo "['Acc Monthly',102198.24,'#721846'],";

echo "['Semi-monthly',121427.22,'#8CB85E'],";

echo " ['Bi-weekly',120653.72,'#A75EB8'],";

echo "['Acc Bi-weekly',101389.01,'#B8A75E'],";

echo "['Weekly',120541.06,'#5EB8A7'],";

echo "['Acc Weekly',101283.82,'#0D3B67']";

echo " ]);".chr(13).chr(10);

echo "".chr(13).chr(10);

echo " var options = {".chr(13).chr(10);

echo " title: 'Karkoli',".chr(13).chr(10);

echo " bar: { groupWidth: '100%' },".chr(13).chr(10);

echo " legend: { position: 'none' }".chr(13).chr(10);

echo " };".chr(13).chr(10);

echo "".chr(13).chr(10);

echo " var chart = new google.visualization.BarChart(document.getElementById('alldiv'));".chr(13).chr(10);

echo "".chr(13).chr(10);

echo " chart.draw(data, options);".chr(13).chr(10);

echo " }".chr(13).chr(10);

echo " </script>".chr(13).chr(10);

echo "".chr(13).chr(10);

echo " <div id='all
div' style='width: 100%; height: 300px;'></div>".chr(13).chr(10);

?>



všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se