Autor | Zpráva | ||
---|---|---|---|
Majkelju Profil |
#1 · Zasláno: 18. 3. 2013, 09:38:51
Tohle téma jsem tu už našel, ale kromě odpovědi, že to jde jedině AJAXem, jsem se ničeho užitečného nedopátral. Jak AJAX použít? Na této stránce: http://stackoverflow.com/questions/7165395/call-php-function-from-javascript je uveden příklad, ale zdá se mi to šíleně dlouhé, vypadá to, že je tam plno věcí navíc, nevím, co z toho je třeba použít... V mém případě jde jen o to, že ve formu na onsubmit volám JS funkci passValue(val, index). Ta má za úkol jen převzít hodnoty pro SQL dotaz...Jelikož ale do JS fce SQL nenarvu, potřebuju ty hodnoty předat dál do nějaké PHP funkce...Jde mi o nějaký jednoduchý příklad, ve kterém by bylo jen to nejnutnější pro předání těch proměnných, abych si to ujasnil a mohl pokračovat v práci. Předem díky...
|
||
user243 Profil |
#2 · Zasláno: 18. 3. 2013, 09:50:55
mně se líbí návod na citrónu;
|
||
Majkelju Profil |
#3 · Zasláno: 18. 3. 2013, 10:09:56
user243:
Nějak z toho nejsem moudrý...v tom návodu jde o něco úplně jiného, než potřebuju :/ On tam nepracuje s žádnou PHP funkcí, vše má v JS... |
||
aDAm Profil |
#4 · Zasláno: 18. 3. 2013, 10:30:28
Jinak než ajaxem to nepůjde. Prostě musíš zavolat na pozadí server předat mu parametry a čekat na odpověď, tu pak následně zpracovat. Pokud používáš jQuery js plugin tak se to dá velice snadně:
$.ajax({ url: "zpracuj.php", // Url co zpracuje ten dotaz data: { val : val, index : index } // Doplnkova data, u tebe treba ten val a index before: function() { // neco co se provede pred odeslanim }, success: function(payload) { // a tady nejake zpracovani vysledku, data sou v promenne payload } }); http://api.jquery.com/jQuery.ajax/ |
||
user243 Profil |
přečti si tu stránku znovu a nahlas;
převzít hodnoty pro sql dotaz, jestli jde o to vzít nějaké value z inputů a neobnovovat stránku - tak ajax; a jak tomu říct, aby to poslalo ty hodnoty? třeba připojit je k url; |
||
Majkelju Profil |
#6 · Zasláno: 18. 3. 2013, 13:49:46
Hlavu jsem pěkně zavařil, ale nepřišel jsem na to. Nicméně napadlo mě jiné řešení - v té JS funkci jsem jednoduše zavolal $.get(); a do něj vepsal potřebné parametry...php skript v takto načteném souboru se vykoná v pořádku, jediné, co nechápu je, že po zavolání fce $.get(); musím zavolat alert();, jinak se skript neprovede...alert tam stejně nějaký být má, ale zajímalo by mě, čím by to mohlo být...
|
||
suvel Profil |
#7 · Zasláno: 18. 3. 2013, 15:24:32
aDAm:
„Jinak než ajaxem to nepůjde“ Ale půjde - obyčejným javascriptem: var temp = new Image(); temp.src = "novy_script.php?p="+promenna; |
||
SeparateSK Profil |
Skúsil som spraviť script, ktorý by to dokázal a tu je výsledok.
JS: <script> function UrlEncode(text){ var ret=""; var povolene_znaky="ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz0123456789"; //definovanie povolenych znakov v url var povolene=new Array(); //vytvorenie tabulky povolenych znakov for(var i=0;i<255;i++) povolene[i]=false; for(var i=0;i<povolene_znaky.length;i++) povolene[povolene_znaky[i].charCodeAt(0)]=true; var c=''; for(var i=0;i<text.length,c=text.substr(i,1).charCodeAt(0);i++) if(!povolene[c]) ret+="%"+(c.toString(16).toUpperCase()); else ret+=text[i]; return ret; } function ZavolajPHPFunkciu(meno){ var args=arguments; var url="callfunc.php?func_name="+meno; var types=Array(); types["number"]=0; types["string"]=1; types["boolean"]=2; for(var i=1;i<args.length-1;i++){ url+="¶m"+i+"="+UrlEncode((typeof args[i]=="string")?args[i]:args[i].toString(10))+"&type"+i+"="+types[typeof args[i]]; //zhotovenie url pre danu premennu } var callback=args[args.length-1]; var x=0; (XMLHttpRequest)?x=new XMLHttpRequest():x=new ActiveXObject("Microsoft.XMLHTTP"); x.onreadystatechange=function(){ if(x.readyState==4&&x.status==200){ var text=x.responseText; callback(text); //zavolanie callbacku } } x.open("GET",url,true); x.send(); } </script> <?php if(isset($_GET["func_name"])){ $params=array(); $types=array(); $types[0]="number"; $types[1]="string"; $types[2]="boolean"; foreach($_GET as $i=>$v){ if(substr($i,0,strlen("param"))=="param"){ $at=intval(substr($i,strlen("param"))); //konvert stringu na cislo $type=$_GET["type$at"]; //zistenie typu, ktory bol pouzity v js pre dany parameter $param=$_GET[$i]; if($types[intval($type)]=="boolean") //prevod stringu na bool, ak v js bol pouzity bool if($param=="true") $param=true; else $param=false; elseif($types[intval($type)]=="number") //prevod stringu na cislo, ak v js bolo pouzite cislo $param=intval($param); $params[$at-1]=$param;//vlozenie parametru do pola parametrov $params } } $func=$_GET["func_name"]; call_user_func_array($func,$params); //zavolanie funkcie $func s parametrami v array $params } ?> ZavolajPHPFunkciu(meno,parametre...,callback); Príklad: ZavolajPHPFunkciu("printf","%s %d","String",128,function(out){document.write(out);}); //print nefunguje ani echo, ale mysql_query áno Edit: Pridal som rozlišovanie typov pre php. ?param1=123&type1=0 ; 0 = číslo, ?param1=123&type=1 ; 1 = reťazec znakov(string) + odstránil eval, ktorý nie je veľmi bezpečný. (ale cezeň aspoň fungoval print a echo) |
||
Časová prodleva: 11 let
|
0