PHP + JQuery – Cum să folosim aceste două împreună? Vă rog să vedeți exemplul meu (Programare, Php, Jquery)

Craig van Tonder a intrebat.

Am un site web bazat pe php. Adică, toate paginile html sunt afișate prin php.

Iată un exemplu simplu:

<?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;
?>

Ceea ce aș dori să fac este să folosesc ceva jquery în această pagină.

Așa că, în mod natural, prima mea încercare a fost să includ scriptul în interiorul variabilei php astfel:

<?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" />
')
        document.write('<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
')
        document.write('<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
')
    }
</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;
?>

Acum, eu folosesc editorul de cod Dreamweaver, care datorită funcției de evidențiere a sintaxei, va evidenția masele de erori de sintaxă produse în acest mod.

Așa că la început am încercat să elimin aceste erori. Acest lucru a eșuat.

Așa că am încercat să schimb „s” în „s” și invers, până când erorile au dispărut. Și acest lucru a eșuat, deoarece se pare că scriptul nu va valida în acest mod.

Așa că am citit câteva tutoriale și l-am găsit pe acesta:

JavaScript și PHP pot aduce fiecare un mare potențial pentru orice efort de dezvoltare web, dar nu se înțeleg întotdeauna bine împreună. Citiți despre probleme.

Iar din câte am înțeles eu, ar trebui să includeți js-ul, mai degrabă decât să îl aveți ca parte a php-ului direct.

Deci, aveți un fișier numit page.php și un altul numit jquery.php. Așa că am decis să încerc să modific această idee pentru a se potrivi cu problema mea.

Așa că am început cu ceva de genul acesta – 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;
?>

Și – 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" />
')
        document.write('<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
')
        document.write('<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
')
    }
</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>

Acum nu există erori de sintaxă în niciuna dintre pagini, minunat… Așa că am încercat, așteptând pe jumătate ca lucrurile să funcționeze în sfârșit…

Nu… Eroare fatală: nu a reușit să deschidă fluxul: Nu există un astfel de fișier sau director blah blah blah. Această eroare se referă la includerea pe care am adăugat-o. Deci, chiar dacă fișierul este acolo, nu este validat ca fiind php, deoarece nu există etichete de deschidere și închidere php.

Așa că le-am adăugat… Și… O pagină plină de erori de sintaxă din nou!

Deci, întrebarea mea este aceasta:

Ar putea cineva să împărtășească niște cunoștințe și să-mi explice în linii mari cum funcționează de fapt acest proces. Care este treaba cu toate erorile de sintaxă, și cum ar trebui să faci o astfel de sarcină?

Cred că este posibil și da, și da, ar fi cu siguranță mai ușor dacă nu aș scoate întregul html prin php. Dar acesta este un exemplu simplu, iar proiectul meu real este mult mai complex. Este nevoie ca diferitele părți ale paginii să fie împărțite în variabile, pentru a plasa aceste părți în mod dinamic, atunci când este nevoie.

Orice contribuție, sugestii sau informații ar fi foarte apreciate; și orice link către pagini sau tutoriale care acoperă acest aspect ar fi, de asemenea, foarte apreciat.

Vă mulțumesc!!!

Comentarii

  • Ar trebui să vizitați w3schools.com/php/default.asp și w3schools.com/jquery/default.asp –  > Por Alfa.
  • Sau, mult mai bine, consultați manualul PHP și paginile jQuery/jQuery UI: ambele au o mulțime de exemple –  > Por Damien Pirsy.
  • De asemenea, w3fools.com –  > Por Shiplu Mokaddim.
  • @Heera Mulțumesc pentru răspuns, dar, din păcate, aceste link-uri nu par să acopere sintaxa dintre jquery și php. –  > Por Craig van Tonder.
  • @Damien mulțumesc omule, mă voi uita la acestea, ai putea furniza link-uri? –  > Por Craig van Tonder.
4 răspunsuri
Ray Perea

Tot ce trebuie să faceți pentru a utiliza jQuery cu PHP este să includeți fișierul javascript jQuery în documentul HTML în tag-ul head. De fapt, eu folosesc PHP împreună cu jQuery tot timpul. Și iată cum o fac. În codul dvs. de mai sus, se pare că aveți unele probleme de evadare cu codul dvs. De asemenea, se pare că doriți să păstrați antetul paginii într-o variabilă PHP și apoi să o imprimați. Nu trebuie să faceți toate astea. Doar puneți textul simplu în fișierul PHP fără niciun tag php și va funcționa. De asemenea, folosiți o versiune veche de jQuery. Ar trebui probabil să folosiți cea mai recentă versiune. Dar, dacă aveți nevoie să fie stocat într-o variabilă PHP, astfel încât să îl puteți imprima, faceți așa:

Deci, iată un cod pentru a începe.

<?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;

?>

Comentarii

  • Mulțumesc, Ray, va trebui să mă uit mai atent la asta. –  > Por Craig van Tonder.
  • Ray, ai reușit să-mi oferi o înțelegere crucială. Și mi-ai rezolvat și problema în acest fel! Aș dori să vă mulțumesc foarte mult pentru asta! Totuși, ca site, de ce ați folosit print over echo? –  > Por Craig van Tonder.
  • Nu am început să programez PHP, PHP este relativ nou pentru mine (doar în ultimii 12 ani sau cam așa ceva) Așa că utilizarea print este un obicei pe care îl am din alte limbaje de programare. În plus, din moment ce încă mai programez în alte limbaje, folosesc print pentru că este mai puțin de reținut. Diferența dintre print și echo este că print returnează true și este un pic mai lent (foarte mic). În plus, cu print, pot scrie declarații precum <?php $content și print $content; ?> Nu poți face asta cu echo. Deci, pentru mine, este o chestiune de stil de programare și flexibilitate, precum și de obișnuință. Noroc. –  > Por Ray Perea.
elrado
<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>

și +111111 la comentariul lui @ HeeraÎți lipsesc elementele de bază.

Comentarii

  • Vă mulțumim pentru răspuns, este apreciat. Dar nu observați ceea ce am spus anterior. TREBUIE să am html-ul în interiorul unei variabile php, asta pentru că designul actual este incredibil de complicat și a necesitat ca anumite părți ale paginii să fie generate dinamic. Încercam mai mult să înțeleg erorile de sintaxă în acest sens, mai mult decât orice altceva. –  > Por Craig van Tonder.
  • Voi fi de acord totuși, că îmi lipsesc elementele de bază, dar mai mult când vine vorba de jquery, acesta este acest lucru este ceva ce am o cunoaștere sumară. În orice caz, mulțumesc mult pentru răspuns! –  > Por Craig van Tonder.
Shiplu Mokaddim

Utilizați Heredoc. Mii de erori de sintaxă vor dispărea.

Vedeți versiunea Heredoc a paginilor dumneavoastră,

  1. http://pastie.org/3412925
  2. http://pastie.org/3412929
  3. http://pastie.org/3412935 // Aici ați folosit include pentru a contacta. include nu returnează nimic. Doar include. Deci, este schimbat în mod diferit.

Comentarii

  • Referința dvs. la Heredoc a fost introducerea mea în acest domeniu. Deși nu este soluția pe care o căutam în acest caz. Sunt convins că îmi va fi de folos la un moment dat. Mulțumesc mult!!! 🙂 –  > Por Craig van Tonder.
sksumii13

Cred că ar trebui să fie

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

altfel php va încerca să includă toate lucrurile de după până când se ajunge la l (tag-urile vor fi interpretate ca parte a numelui de fișier).

de asemenea, în ceea ce privește codul php, după ce fișierul este inclus (la succes), declarația include se traduce în 1 ca număr, în loc de conținutul fișierului.

utilizați

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

pentru toate fișierele pe care doriți să le includeți

Tags:,