ďťż
Podstrony
|
telcocafeWItam!Chciałem spróbować uruchomić prosty skrypt AJAX an swoim serwerze WebServ 2.0 (php5, mysql5). Niestety po załadowaniu skryptu nic się nie dzieje - wyświetla się ikonka ładowania. Oto kody stron: getCurrency.php <?php $content = file_get_contents('http://axv.pl/rss/waluty_api.php?kod='.$_GET['currency' ]); if ($content !== false) { header("Content-type: text/xml"); //sleep(1); echo $content; } else { echo 'error'; } ?> waluty.html <html> <head> <style> .button { cursor: pointer; background-color: #e7e7e7; padding: 5px 13px 5px 13px; color: #4f4f4f; font: bold 10px Tahoma; float: left; border-left: 1px solid #D1D1D1; } </style> <script language="Javascript" src="FusionChartsFree/JSClass/FusionCharts.js"></script> <script language="javascript"> function GetCurrencyFromServer(currency){ var xmlHttp = null; if (window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); } else if (window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } if (xmlHttp == null){ alert("Błąd inicjalizacji obiektu HTTP Request"); return; } //var url = "http://axv.pl/rss/waluty_api.php?kod=" + currency; var url = "http://localhost/ajax/getCurrency.php?currency=" + currency; xmlHttp.onreadystatechange = function(){ ResponseEnd(currency, xmlHttp) }; document.getElementById('chartBox').innerHTML = "<img style='margin-top: 50px;' src='waiting.gif'/>"; xmlHttp.open("get", url, true); xmlHttp.send(null); } function ResponseEnd(currency, xmlHttp){ if (xmlHttp.readyState == 4){ if (xmlHttp.status == 200){ ParseResponseAndDrawChart(xmlHttp.responseXML, currency); } } } function ParseResponseAndDrawChart(resXml, currency) { var currenciesAndDates = new Array(); var minCurrencyVal; var maxCurrencyVal; var titleItems = new Array(); var channelItems = resXml.getElementsByTagName('channel')[0].getElementsByTagName("item" ); for(var i=0; i<channelItems.length; i++){ titleItems[i] = { currencyAndDate: channelItems[i].getElementsByTagName("title")[0].childNodes[0] .nodeValue}; } var counter = 0; for(var i=0; i<channelItems.length; i++){ var currencyVal = ""; var currencyDate = ""; var re = new RegExp("[0-9]+\,[0-9]+"); var m = re.exec(titleItems[i].currencyAndDate); if (m != null) { currencyVal = m[0].replace("\,", "\."); } re = new RegExp("[0-9]{4}-[0-9]{2}-[0-9]{2}"); m = re.exec(titleItems[i].currencyAndDate); if (m != null) { currencyDate = m[0]; } if (currencyVal != "" && currencyDate != "") currenciesAndDates[counter++] = {val: currencyVal, date: currencyDate}; } currenciesAndDates.reverse(); //obliczamy min i maks wartość waluty minCurrencyVal = currenciesAndDates[0].val; maxCurrencyVal = currenciesAndDates[0].val; for(var i=0; i<currenciesAndDates.length; i++){ if (currenciesAndDates[i].val > maxCurrencyVal ) maxCurrencyVal = currenciesAndDates[i].val; if (currenciesAndDates[i].val < minCurrencyVal ) minCurrencyVal = currenciesAndDates[i].val; } DrawChart(currency, currenciesAndDates, minCurrencyVal, maxCurrencyVal); } function DrawChart(currency, currenciesAndDates, minCurrencyVal, maxCurrencyVal){ var myChart = new FusionCharts("FusionChartsFree/Charts/FCF_Line.swf", "myChartId", "220", "220"); var xmlChartData = "<graph caption='Kurs " + currency + "' xAxisName='' yAxisName='' showNames='0' decimalPrecision='2' formatNumberScale='0' yaxisminvalue='" + minCurrencyVal + "' yaxismaxvalue='" + maxCurrencyVal + "' rotateNames='1'>"; for(var i=0; i<currenciesAndDates.length; i++){ xmlChartData += "<set name='" + currenciesAndDates[i].date + "' value='" + currenciesAndDates[i].val + "' color='AFD8F8' />"; } xmlChartData += "</graph>"; myChart.setDataXML(xmlChartData); myChart.render("chartBox"); document.getElementById('div_USD').style.backgroundColor = ''; document.getElementById('div_USD').style.color = ''; document.getElementById('div_EUR').style.backgroundColor = ''; document.getElementById('div_EUR').style.color = ''; document.getElementById('div_CHF').style.backgroundColor = ''; document.getElementById('div_CHF').style.color = ''; document.getElementById('div_GBP').style.backgroundColor = ''; document.getElementById('div_GBP').style.color = ''; document.getElementById('div_'+currency).style.color = 'white'; document.getElementById('div_'+currency).style.backgroundColor = '#000066'; } function Start() { GetCurrencyFromServer("USD"); } </script> </head> <body onload="Start()"> <div id="" style="width: 230px;"> <div style="font-family: tahoma; padding: 5px 5px 5px 20px;"> <div id="div_USD" class="button" onclick="GetCurrencyFromServer('USD');"> USD</div> <div id="div_EUR" class="button" onclick="GetCurrencyFromServer('EUR');"> EUR</div> <div id="div_CHF" class="button" onclick="GetCurrencyFromServer('CHF');"> CHF</div> <div id="div_GBP" class="button" onclick="GetCurrencyFromServer('GBP');"> GBP</div> </div> <div id="chartBox" align="center"> </div> </div> </body> </html> Najdziwniejsze jest to iż skrypt działa bez problemów na serwerze XAMPP dostarczonym na płytce KS. Dlaczego nie działa on na moim serwerze i jak to naprawić?? Z góry dzięki za pomoc //edit: Uprzedzając pytania: sprawdziłem położenie plików w katalogach Użytkownik piotr94 edytował ten post 11 listopad 2008, 14:41 W czym jest problem? Co rozumiesz przez załadowanie pliku? Skoro na lokalu działa, więc gdzie nie chce? Są jakieś błędy? Masz Firebug? // Edytowano Oj, nie zauważyłem, że chodzi o WebServer. Ale czy ten serwer ma możliwość czytania z socketów? Użytkownik andrzej_aa edytował ten post 11 listopad 2008, 20:51 W pliku c:\windows\php.ini spróbuj zmienić wartość allow_url_fopen z Off na On i zrestartuj serwer. Jeśli to nie pomoże, usuń średnik z linii ;extension=php_sockets.dll. Problem sam rozwiązałem - otóż podawałem jako adres pliku 127.0.0.1, a nie localhost co blokowało syrypt. |
|||
Sitedesign by AltusUmbrae. |