Forum » Programiranje » AJAX težava
AJAX težava
tadejp81 ::
Zdravo.
Ali obstaja kakšna rešitev, da bi dajal zahteve na oddaljen strežnik?
Imam XMLHttpRequest objekt, z njim pa bi rad gledal določen php file (sql.php)na oddaljenem strežniku. z XMLHttpRequest.open("GET","http://192.168.123.1/mysql.php",true). AJAX mi deluje, če imam vse skupaj shranjeno na strežniku. Pogoj pa je, da se spletni portal izvaja lokalno na računalniku, mysql.php pa se nahaja na nekem strežniku na LAN mreži.
Če ima kdo kakršnekoli izkušnje s tem bi prosil za nasvet. Poskušal sem tudi stvar prelisičiti tako, da sem prenesel celoten js file na strežnik in ga poskušal vstavit v lokalni html, vendar stvar tudi ne deluje, ker si browser za pot vzame referenco HTML fajla (lokalno) v katerega je importan js file.
Hvala in lep dan, Tadej
Ali obstaja kakšna rešitev, da bi dajal zahteve na oddaljen strežnik?
Imam XMLHttpRequest objekt, z njim pa bi rad gledal določen php file (sql.php)na oddaljenem strežniku. z XMLHttpRequest.open("GET","http://192.168.123.1/mysql.php",true). AJAX mi deluje, če imam vse skupaj shranjeno na strežniku. Pogoj pa je, da se spletni portal izvaja lokalno na računalniku, mysql.php pa se nahaja na nekem strežniku na LAN mreži.
Če ima kdo kakršnekoli izkušnje s tem bi prosil za nasvet. Poskušal sem tudi stvar prelisičiti tako, da sem prenesel celoten js file na strežnik in ga poskušal vstavit v lokalni html, vendar stvar tudi ne deluje, ker si browser za pot vzame referenco HTML fajla (lokalno) v katerega je importan js file.
Hvala in lep dan, Tadej
tadejp81 ::
Dukedl, težava je, ker moram imeti vse fajle razen sql.php shranjene lokalno. Client bo tukaj TV sprejemnik, ki bo imel naložene vse fajle interno (razem sql.php naj bi bil na strežniku), v bazo pa bo gledal s pomočjo XMLHttpRequest, in doatoteke sql.php, ki jo bo klical. Torej na apache+php+mysql serverju bo samo datoteka sql.php, ostalo bo vse pognano lokalno.
smacker ::
Zaradi varnostnih razlogov (JS posreduje uporabnikove podatke na nek neznan strežnik) je tako delovanje privzeto izklopljeno.
Rešitev: http://stackoverflow.com/questions/3506...
Meni je ljubša druga rešitev, kjer nastaviš Access-Control-Allow-Origin: *
Rešitev: http://stackoverflow.com/questions/3506...
Meni je ljubša druga rešitev, kjer nastaviš Access-Control-Allow-Origin: *
tadejp81 ::
Žal nobenden od teh postopkov ne deluje, razen če bi uporabil JSONP. Tudi Access-Control-Allow-Origin: * ne moram nastavit v headerju, ker nimam PHP-ja (osnovna stran ne teče na nobenem strežniku, ampak se jo zažene lokalno na računalniku). Poskušal sem postaviti header z js-jem setRequestHeader("Access-Control-Allow-Origin", "*"), vendar ne gre (očitno bi moral prav ročno spremeniti nastavitve v brskalniku), da omogočim CORS, te možnosti pa nimam.
Baje, da se da to narediti z JSONP, z jquery na enostaven način, vendar jaz uporabljam samo čisto JS od samega začetka projekta in ne bi rad zdaj mešal zadev.
Jaz imam tako formo:
Če bi znal kdo to pretvorit, da bi delovalo na principu JSONP. V vsakem primeru hvala za odgovore.
Lep dan, Tadej
Baje, da se da to narediti z JSONP, z jquery na enostaven način, vendar jaz uporabljam samo čisto JS od samega začetka projekta in ne bi rad zdaj mešal zadev.
Jaz imam tako formo:
function ajax() { ajaxCounter++; if(window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","General/PHP/GetGeneralRoomInfo.php",true); xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { ajaxCounter--; ajaxResponse = xmlhttp.responseText; } } xmlhttp.send(); }
Če bi znal kdo to pretvorit, da bi delovalo na principu JSONP. V vsakem primeru hvala za odgovore.
Lep dan, Tadej
Zgodovina sprememb…
- spremenil: tadejp81 ()
hellboy123 ::
How to make a JSONP request from Javascript without JQuery? or Google: "vanilla javascript jsonp"
smacker ::
Za omogočit CORS lahko potegneš Chromium browser, neka development različica Chroma. Hitra rešitev za razvoj in če maš nekaj za lastno uporabo. Če boš dal drugim v uporabo, bo treba nekako drugače rešit, ne moreš zahtevat od userjev da nameščajo extra browser za tvoj app.
hellboy123 ::
Tudi za chrome obstaja plugin Allow-Control-Allow-Origin: * ampak JSONP je verjetno boljša opcija.
tadejp81 ::
Hvala.
Gre se v bistvu za TV sprejemnike (imajo nameščen Opera browser), nimam pa pravic, da bi menjal browser ali spreminjal kakršnekoli nastavitve v njem. Verjetno bom poskušal rešit zadevo nekako z JSONP.
Hvala še enkerat za vse nastvete.
Tadej
Gre se v bistvu za TV sprejemnike (imajo nameščen Opera browser), nimam pa pravic, da bi menjal browser ali spreminjal kakršnekoli nastavitve v njem. Verjetno bom poskušal rešit zadevo nekako z JSONP.
Hvala še enkerat za vse nastvete.
Tadej
nightrage ::
Sicer sem bolj v C# vodah sam zakaj pa ne bi poiskusil z kakšnim PHP Web Servisom. https://davidwalsh.name/web-service-php...
Zgodovina sprememb…
- spremenil: nightrage ()
googleg1 ::
Ne zastopim, zakaj ne spremenis headerjev streznika iz katerega nalagas spletno stran.
Žal nobenden od teh postopkov ne deluje, razen če bi uporabil JSONP. Tudi Access-Control-Allow-Origin: * ne moram nastavit v headerju, ker nimam PHP-ja (osnovna stran ne teče na nobenem strežniku, ampak se jo zažene lokalno na računalniku).Ce servira spletne strani potem je to streznik ki deluje preko HTTP protokola. Vprasanje je samo na kaksen nacin. Ta header ti bo v enem koraku resil vse tezave.
Jakkob ::
Imaš dostop do strežnika in mysql.php datoteke ali ne?
Če da, dodaj v php file:
Če ne, JSONP.
Če da, dodaj v php file:
header('Access-Control-Allow-Origin: *');
Če ne, JSONP.
Zgodovina sprememb…
- spremenil: Jakkob ()
tadejp81 ::
Zdravo.
Uff... dela zdaj :) Sem poenostavil kodo in postavil testno okolje in zadeva zdaj dela, če vpišem v html header('Access-Control-Allow-Origin: *'). Očitno sem nekaj slabo stestiral v obstoječem projektu. Zdaj bom to samo še prenesel v pravi projekt.
Hvala še enkrat vsem.
test.php
javascript.js
index.xhtml
Uff... dela zdaj :) Sem poenostavil kodo in postavil testno okolje in zadeva zdaj dela, če vpišem v html header('Access-Control-Allow-Origin: *'). Očitno sem nekaj slabo stestiral v obstoječem projektu. Zdaj bom to samo še prenesel v pravi projekt.
Hvala še enkrat vsem.
test.php
<?php header('Access-Control-Allow-Origin: *'); echo " Test ajax() "; ?>
javascript.js
function ajax() { if(window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","http://192.168.123.2/cors/test.php",true); xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById("output").innerHTML += xmlhttp.responseText; } } xmlhttp.send(); }
index.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="application/ce-html+xml; charset=UTF-8"/> <script src="javascript.js" type="text/javascript"></script> </head> <body> <div id="button"> <button onclick="ajax()">Test</button> </div> <div id="output" style="margin: 10px; padding: 10px; background: green;"></div> </body> </html>
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | AJAX kratke nalogeOddelek: Izdelava spletišč | 2281 (1748) | Yacked2 |
» | [javascript] zazeni, pocakaj, osveziOddelek: Programiranje | 986 (819) | detroit |
» | [ajax] osnoveOddelek: Programiranje | 1063 (907) | Volk| |
» | AJAX neznana težavaOddelek: Programiranje | 1198 (992) | luksorzi |
» | Prihaja Firefox 3.1Oddelek: Novice / Brskalniki | 5134 (3424) | squngy |