Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

variabili js e php

0 views
Skip to first unread message

artev

unread,
Jul 21, 2008, 10:58:28 AM7/21/08
to
ho un File0.php con:

<?php $var2='Hello'; ?>

<script type="text/javascript">
var vp2 = '<?php print $var2; ?>' ;
document.write(vp2) ;
</script>

e funziona;
Volevo però usare soluzioni alternative anche poer capire come si integra
js con php:
1) var vp2 = '<?php $var2; ?>' ;
perchè così non funziona ? (vuole per forza print o echo)

2) spostare questa riga <?php $var2='Hello'; ?>
dal File.php ad un altro file.js

essendo codice php credo l'unica soluzione sia creare sempre un file1.php
ma con header in javascript che sarà poi richiamato dal File0.php:
è fattibile e come?
(nb non voglio usare include o similari in quanto volevo testare
il richiamo su un file php di un file js o sua simulazione)

Alessandro Pellizzari

unread,
Jul 21, 2008, 11:28:26 AM7/21/08
to
Il Mon, 21 Jul 2008 16:58:28 +0200, artev ha scritto:

> ho un File0.php con:
>
> <?php $var2='Hello'; ?>
>
> <script type="text/javascript">
> var vp2 = '<?php print $var2; ?>' ;
> document.write(vp2) ;
> </script>
>
> e funziona;

Beh, si`. :)

> Volevo però usare soluzioni alternative anche poer capire come si
> integra js con php:

Non si integra. Uno e` lato server, uno lato client.
Puoi generare javascript dinamicamente tramite PHP.

> 1) var vp2 = '<?php $var2; ?>' ;
> perchè così non funziona ? (vuole per forza print o echo)

Perche` altrimenti php coma fa a capire cosa vuoi fare se non gli dai il
comando (print o echo)?



> 2) spostare questa riga <?php $var2='Hello'; ?> dal File.php ad un
> altro file.js

Devi costringere il server a trattare i file .js come se fossero PHP. Non
e` impossibile, ma e` sconsigliato perche` appesantisce anche i file js
non dinamici.



> essendo codice php credo l'unica soluzione sia creare sempre un
> file1.php ma con header in javascript che sarà poi richiamato dal
> File0.php: è fattibile e come?
> (nb non voglio usare include o similari in quanto volevo testare il
> richiamo su un file php di un file js o sua simulazione)

Non ho capito cosa vuoi fare...

Bye.

Gufo Rosso

unread,
Jul 21, 2008, 12:11:49 PM7/21/08
to
artev ha scritto:

un dato da php a js lo passi o con il get
(window.location)
o con un
var pluto='<?=$gatto;?>';
oppure passi i dati al js con xhr / json


ti incollo un .php

<?
$dati = array();
echo "[";
$sql="SELECT * FROM ".$table['rass']."testa ORDER BY tx_nome ASC;";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)){
$dati[] = "{\"a\": ".$row['TX'].",\"b\": \"".$row['tx_nome']."\"}";
}
echo implode(",",$dati);
echo "]";
?>

<script type="text/javascript" src="./funzioni/js/xhr.js"></script>

<script type="text/javascript">

function subargo(ob){
var pos = '&ac=' + ob.value;
XHR.send({
url : 'scarica.php?<?="adm=".$mo[0]."&win=12";?>',
type : 'POST',
async : true,
data : pos,
content_type : 'application/x-www-form-urlencoded',
success : function(text) {
// alert(text);
var oj = eval(text);
document.forms[0].sa.length = 0;

// alert(oj.length);
for(i=0; i<oj.length; i++){
newoption = new Option(oj[i].b,oj[i].a,false,true);
document.forms[0].sa.options[i] = newoption;
}

},
error : function(text){
alert(text);
}
});
}

xhr.js:


var XHR = {
/**#@+
* @method
*/

/**
* Sends a XMLHTTPRequest.
* Consult the Wiki for details on what settings this method takes.
*
* @param {Object} o Object will target URL, callbacks and other info
needed to make the request.
*/
/**
http://tinymce.moxiecode.com/ for copyright (il codice originale e'
stato modificato)
*/
send : function(o) {
var x, t, w = window, c = 0;

// Default settings
o.scope = o.scope || this;
o.success_scope = o.success_scope || o.scope;
o.error_scope = o.error_scope || o.scope;
o.async = o.async === false ? false : true;
o.data = o.data || '';

function get(s) {
x = 0;

try {
x = new ActiveXObject(s);
} catch (ex) {
}

return x;
};

x = w.XMLHttpRequest ? new XMLHttpRequest() : get('Microsoft.XMLHTTP')
|| get('Msxml2.XMLHTTP');

if (x) {
if (x.overrideMimeType)
x.overrideMimeType(o.content_type);

x.open(o.type || (o.data ? 'POST' : 'GET'), o.url, o.async);

if (o.content_type)
x.setRequestHeader('Content-Type', o.content_type);

x.send(o.data);

// Wait for response, onReadyStateChange can not be used since it
leaks memory in IE
t = w.setInterval(function() {
if (x.readyState == 4 || c++ > 10000) {
w.clearInterval(t);

if (o.success && c < 10000 && x.status == 200)
o.success.call(o.success_scope, '' + x.responseText, x, o);
else if (o.error)
o.error.call(o.error_scope, c > 10000 ? 'TIMED_OUT' : 'GENERAL',
x, o);

x = null;
}
}, 10);
}

/**#@-*/
}
}

artev

unread,
Jul 21, 2008, 4:49:13 PM7/21/08
to

>> Volevo perň usare soluzioni alternative anche poer capire come si

>> integra js con php:
>
> Non si integra. Uno e` lato server, uno lato client.
> Puoi generare javascript dinamicamente tramite PHP.
>
>> 1) var vp2 = '<?php $var2; ?>' ;
>> perchč cosě non funziona ? (vuole per forza print o echo)

>
> Perche` altrimenti php coma fa a capire cosa vuoi fare se non gli dai il
> comando (print o echo)?

forse mi sfugge il concetto che ho sempre inteso il print come una stampata
a video per l'utente finale; per cui mi č sembrato strano che dovendosi
scambiare i dati da php a js fosse necessario questo passaggio tra i 2
linguaggi;
inoltre scrivere var pippo='<?php print $pluto; ?>';
č la stesa cosa di var pippo='<?=$pluto?>'; dai test mi sembrano identici

>> 2) spostare questa riga <?php $var2='Hello'; ?> dal File.php ad un
>> altro file.js
>
> Devi costringere il server a trattare i file .js come se fossero PHP. Non
> e` impossibile, ma e` sconsigliato perche` appesantisce anche i file js
> non dinamici.


forse intendevi l'inverso, oppure altro modo con il php (senza quindi agire
su apache) fare in modo che un file php sia come un file .js ?
io ho fatto cosě:

da un File0.php con inizio il
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ....

gli faccio richiamare un file1.php (un php forzato ad essere js)
con all'inizio <?php header('Content-type: text/javascript'); ?>

il problema č che se ho una variabile php $var04 esterna a tutti e 2 i
file, quando la uso sul File0 , tutto ok; mentre messa sul file1 risulta
non definita


č come se il file con l'heder content-type .. disturbi o non accetti
l'inserimento della variabile;

artev

unread,
Jul 21, 2008, 4:52:51 PM7/21/08
to
>
> un dato da php a js lo passi o con il get
> (window.location)
> o con un
> var pluto='<?=$gatto;?>';

questa in realtà è identica all'uso del print o echo?
dai tst ho lo tesso risultato


> oppure passi i dati al js con xhr / json

qui devo vedere; ma in quali casi si usa ?


in risposta all'altro post ho meglio definito il quesito

ringrazio comunque entrambi e il ng

Alessandro Pellizzari

unread,
Jul 22, 2008, 7:27:07 AM7/22/08
to
Il Mon, 21 Jul 2008 22:49:13 +0200, artev ha scritto:

> forse mi sfugge il concetto che ho sempre inteso il print come una

> stampata a video per l'utente finale; per cui mi è sembrato strano che


> dovendosi scambiare i dati da php a js fosse necessario questo passaggio
> tra i 2 linguaggi;

Allora, se vuoi semplificare, considera il javascript come qualcosa che va
a video dell'utente finale. :)

Il flusso e` questo:

browser -> richiede al server la pagina 1.php

server -> legge 1.php, si accorge che e` .php e la passa a php

php -> legge 1.php, esegue i comandi che ci sono, passa l'output al server

server -> legge da php l'output, lo manda al browser

browser -> visualizza l'output. si accorge che c'e` un pezzo <script
type="text/javascript", lo passa all'interprete javascript

javascript -> esegue sul browser il codice js


Come vedi, PHP e JS non si parlano mai direttamente. Da PHP puoi creare
dinamicamente codice javascript, ma PHP non ha idea di cosa sia, per lui
e` tutto testo. E nemmeno il server sa cos'e`, anche per lui e` puro testo.

> inoltre scrivere var pippo='<?php print $pluto; ?>'; è la stesa cosa di


> var pippo='<?=$pluto?>'; dai test mi sembrano identici

In PHP <?= e` un "alias" per <?php print

>> Devi costringere il server a trattare i file .js come se fossero PHP.
>> Non e` impossibile, ma e` sconsigliato perche` appesantisce anche i
>> file js non dinamici.

> forse intendevi l'inverso, oppure altro modo con il php (senza quindi
> agire su apache) fare in modo che un file php sia come un file .js ? io

> ho fatto così:

No, vedi sopra.
Il server elabora PHP solo se sa che deve farlo. Quindi se gli dici "i
file con estensione .js sono file PHP", lui richiama PHP, altrimenti no, e
passa il file direttamente al browser.

Devi cambiare la tua prospettiva :)



> da un File0.php con inizio il
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ....
>
> gli faccio richiamare un file1.php (un php forzato ad essere js) con
> all'inizio <?php header('Content-type: text/javascript'); ?>
>

> il problema è che se ho una variabile php $var04 esterna a tutti e 2 i


> file, quando la uso sul File0 , tutto ok; mentre messa sul file1 risulta
> non definita

Dipende tutto da cosa intendi per "faccio richiamare".

Posta il codice, anche se credo sia meglio metterlo in it.comp.www.php,
piuttosto che qui.

Bye.

Gufo Rosso

unread,
Jul 24, 2008, 11:16:50 PM7/24/08
to
artev ha scritto:

>> un dato da php a js lo passi o con il get
>> (window.location)
>> o con un
>> var pluto='<?=$gatto;?>';
>
> questa in realtà è identica all'uso del print o echo?
> dai tst ho lo tesso risultato
>
>
>
>
>> oppure passi i dati al js con xhr / json
>
> qui devo vedere; ma in quali casi si usa ?
>

quando voi qualcosa dal server
tipo anche se banale

vuoi caricare uno sfondo ?
scegli:

xhr lista sfondi
UTENTE SCEGLIE
immgine di sfondo
in parica la prima chimata la fai con il
body onload = caricalevariabili_da_xhr()

<?= e' echo
print non e' echo sono diverse echo non supporta %
ed e' piu veloce


>
> in risposta all'altro post ho meglio definito il quesito
>
> ringrazio comunque entrambi e il ng

--
Voi un applicazione web per la tua azienda ?
non riesci mai a trovare quello che sai di avere
e non ricordi chi lo ha fatto

g u f o _ r o s s o CHIOCCIOLA libero.it

0 new messages