2012-02-19 9 views
8

Ho un sito Web basato su php. Come in, tutte le pagine html vengono emesse via php.PHP + JQuery - Come usare questi due insieme? Si prega di vedere il mio esempio

Ecco un semplice esempio:

<?php 
ob_start(); 

$pageStart = ' 
<!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"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>MY WEBSITE PAGE</title> 
</head> 
<body> 
<p>CONTENT</p> 
</body> 
</html> 
'; 

echo $pageStart; 
exit; 
?> 

Quello che vorrei fare è fare uso di alcuni jquery in questa pagina.

Così, naturalmente, il mio primo tentativo è stato quello di includere lo script all'interno della variabile php in questo modo:

<?php 
ob_start(); 

$pageStart = ' 
<!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"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 

<script type="text/javascript"> 
    var datefield=document.createElement("input") 
    datefield.setAttribute("type", "date") 
    if (datefield.type!="date"){ //if browser doesn't support input type="date", load files for jQuery UI Date Picker 
     document.write('<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />\n') 
     document.write('<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"><\/script>\n') 
     document.write('<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"><\/script>\n') 
    } 
</script> 

<script type="text/javascript"> 
if (datefield.type!="date"){ //if browser doesn't support input type="date", initialize date picker widget: 
    jQuery(function($){ //on document.ready 
     $('#birthday').datepicker(); 
    }) 
} 
</script> 

</head> 
<body> 
<p>CONTENT</p> 
</body> 
</html> 
'; 

echo $pageStart; 
exit; 
?> 

Ora, io uso Dreamweavers editor di codice, che a causa della funzione di evidenziazione della sintassi, indicherà le masse di errori di sintassi prodotti in questo.

Quindi inizialmente ho tentato di eliminare questi errori. Questo fallì.

Così ho provato a cambiare la "s per 's, e viceversa, fino a quando gli errori erano spariti. Questa non è riuscito anche a quanto pare lo script non convaliderà in questo modo.

così ho letto un qualche tutorial , e abbiamo trovato questo:.

JavaScript and PHP may each bring great potential to any Web development effort, but they don't always play nice together. Read about the problems.

e il modo in cui ho capito, è che avresti bisogno di includere i js, piuttosto che averlo come parte del vostro php direttamente

Quindi hanno un file chiamato page.php e un altro chiamato jquery.php. Così ho deciso di provare a modificare questa idea per adattarla al mio problema.

così ho iniziato con qualcosa di simile - index.php:

<?php 
ob_start(); 

$pageStart = ' 
<!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"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>MY WEBSITE PAGE</title> 
'. include $_SERVER['DOCUMENT_ROOT'] . '/../../path/to/include/datepicker.php'.' 
</head> 
<body> 
<p>CONTENT</p> 
</body> 
</html> 
'; 

echo $pageStart; 
exit; 
?> 

E - datepicker.php:

<script language="Javascript"> 
    var datefield=document.createElement("input") 
    datefield.setAttribute("type", "date") 
    if (datefield.type!="date"){ //if browser doesn't support input type="date", load files for jQuery UI Date Picker 
     document.write('<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />\n') 
     document.write('<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"><\/script>\n') 
     document.write('<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"><\/script>\n') 
    } 
</script> 
<script language="Javascript"> 
if (datefield.type!="date"){ //if browser doesn't support input type="date", initialize date picker widget: 
    jQuery(function($){ //on document.ready 
     $('#birthday').datepicker(); 
    }) 
} 
</script> 

Ora non ci sono errori di sintassi in una delle pagine, grande ... Quindi ci provo, quasi aspettandomi che le cose funzionino ...

No ... Errore irreversibile: impossibile aprire lo stream: Nessun file o directory blah blah. Questo errore riguarda l'inclusione che ho aggiunto. Va bene, anche se il file è lì, non viene convalidato come php perché non ci sono tag php di apertura e chiusura.

Quindi li aggiungo ... Annnd ... Una pagina piena di errori di sintassi ancora!

Quindi la mia domanda è questa:

Potrebbe alcuni si prega di condividere alcune conoscenze e spiegare a me più o meno come funziona realmente questo processo. Qual è l'accordo con tutti gli errori di sintassi, e come si dovrebbe andare su un compito come questo?

Credo che sia possibile, e sì sarebbe sicuramente più facile se non stavo emettendo l'intero html via php. Ma questo è un esempio semplice e il mio progetto attuale è molto più complesso. Richiede che le diverse parti della pagina siano suddivise in variabili, al fine di posizionare quei bit e peices quando necessario, in modo dinamico.

Qualsiasi input, suggerimento o intuizione sarebbe molto apprezzato; e qualsiasi link a pagine o tutorial che lo riguardi sarebbe molto apprezzato.

Grazie !!

+1

vi consigliamo di visitare http://www.w3schools.com/php/default.asp e http: //www.w3schools .com/jquery/default.asp –

+1

O meglio, guarda le pagine di manuale PHP e jQuery/jQuery UI: entrambi hanno molti esempi –

+0

Anche http://w3fools.com/ –

risposta

7

Tutto ciò che devi fare per utilizzare jQuery con PHP è includere il file javascript jQuery nel documento HTML nel tag head. In realtà uso PHP insieme a jQuery per tutto il tempo. Ed è così che lo faccio. Nel tuo codice sopra, sembra che tu abbia qualche problema di escape con il tuo codice. E sembra anche che tu voglia tenere l'intestazione della pagina in una variabile PHP e poi stamparla. Non devi fare tutto questo. Basta inserire il testo in chiaro nel file PHP senza tag php e funzionerà. Inoltre, stai usando una vecchia versione di jQuery. Probabilmente dovrebbe usare l'ultima versione. Ma, se ne hai bisogno, memorizzato in una variabile PHP per stamparlo, fai questo:

Quindi, ecco un codice per iniziare.

<?php 
$pageStart = '<!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"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>MY WEBSITE PAGE</title> 
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" /> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(e) { 
    $("#date").datepicker(); 
}); 
</script> 
</head> 
<body> 
<input type="text" id="date" name="date" /> 
</body> 
</html>'; 

print $pageStart; 

?> 
+0

Wow, grazie Ray, dovrò dare un'occhiata più da vicino a questo. –

+0

Ray, sei riuscito a darmi qualche comprensione crutale. E hai risolto il mio problema nel farlo! Vorrei ringraziarvi moltissimo per questo! Come un sito non però, perché hai usato la stampa su echo? –

+2

Non ho iniziato a programmare PHP, PHP è relativamente nuovo per me (solo negli ultimi 12 anni circa) Quindi, usare la stampa è un'abitudine che ho da altri linguaggi di programmazione. Inoltre, poiché continuo a programmare in altre lingue, uso la stampa perché è meno che devo ricordare. La differenza tra stampa ed eco è che la stampa restituisce true ed è un po 'più lenta (veramente piccola). Inoltre, con la stampa, posso scrivere affermazioni come Non puoi farlo con l'eco. Quindi, per me, è una questione di stile di programmazione, flessibilità e abitudine. Saluti. –

3
<head> 
<script type="text/javascript" 
src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
    // javascript & jquery code 
    // even better would be if you would put client code in separate file!!! 
    }); 
</script> 
</head> 
<body> 
<?php 
    echo "bla bla bla"; 
?> 
</body> 

e 1111 a @ commento di Heera vi state perdendo le basi di.

+1

Grazie per la vostra risposta, è apprezzato. Ma ti manca quello che avevo precedentemente detto. DEVO avere l'html all'interno di una variabile php, questo perché il design attuale è incredibilmente complicato e richiede che alcune parti della pagina vengano generate dinamicamente. Stavo cercando di capire meglio gli errori di sintassi in questo, più di ogni altra cosa. –

+1

Sono d'accordo, però, che mi mancano le basi, ma di più quando si tratta di jquery, questo è qualcosa di cui ho una nuda conoscenza. In ogni caso, grazie mille per la tua risposta! –

1

Utilizzare Heredoc. Migliaia di errori di sintassi spariranno.

vedere la versione heredoc delle tue pagine,

  1. http://pastie.org/3412925
  2. http://pastie.org/3412929
  3. http://pastie.org/3412935 // Qui hanno utilizzato include da contattare. include non restituisce nulla. Comprende solo Quindi è cambiato in modo diverso.
+0

Darei un'occhiata a questi, grazie mille! –

+0

Il tuo riferimento ad Heredoc è stata la mia introduzione ad esso. Anche se non è la soluzione che stavo cercando in questo caso. Sono certo che a un certo punto mi sarà utile. Molte grazie!! :) –

0

penso che dovrebbe essere

. (include ($_SERVER['DOCUMENT_ROOT'] . '/../../path/to/include/datepicker.php')) . 

altrimenti php cercherà di includere tutte le cose dopo fino al raggiungimento del l (tag saranno interpretati come parte del nome del file).

inoltre, in termini di codice php, dopo che il file è stato incluso (in caso di successo), l'istruzione include si traduce in 1 come numero, invece del contenuto del file.

uso

<? $abc <<<qwerty 
... 
... 
... 
qwerty; 
return qwerty; 
?> 

per tutti i file che si desidera includere

Problemi correlati