PHP Syntax Check: Parse error: syntax error, unexpected '}'

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bas Driessen

Bas Driessen

09/06/2021 12:12:27
Quote Anchor link
Hallo, ik ben erg groen hiermee. Dus ik worstel hier nog erg mee. Het is waarschijnlijk een domme vraag. Maar ik krijg deze error op dit stukje code en ik weet niet hoe ik dit kan herstellen. Ik kwam erachter toen ik zag dat het ingelogd in admin wel werkt en niet live. Dat krijg ik een JQuery not defined. Heb de code in php checker gezet om te zien waar het aan ligt. Geeft aan de "} );" . Maar ik kom er gewoon niet uit. Iemand die mij wil helpen hiermee? Dank je wel.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
add_action( 'wp_footer', function(){

            ?>
<script type="text/javascript">

jQuery(document).ready(function($){

$(document.body).on('click','.added_to_cart', function(e){

e.preventDefault();

$('.xoo-cp-basket').trigger('click');

});

}); </script>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php

} );
 
PHP hulp

PHP hulp

19/09/2021 07:50:04
 
- Ariën -
Beheerder

- Ariën -

09/06/2021 12:20:48
Quote Anchor link
En wat als jouw PHP-blok niet onderbreekt?
 
Bas Driessen

Bas Driessen

09/06/2021 16:05:53
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
add_action( 'wp_footer', function(){

            ?>
<script type="text/javascript">

jQuery(document).ready(function($){

$(document.body).on('click','.added_to_cart', function(e){

e.preventDefault();

$('.xoo-cp-basket').trigger('click');

});

}); </script>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php

} );



Bedoel je de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ?
 
- Ariën -
Beheerder

- Ariën -

09/06/2021 16:50:54
Quote Anchor link
Gebruik hier de code-tags of de codeknop voor berichten.

Zet je JavaScript in een echo.
Wat er er exact nu fout gaat is het volgende: Je onderbreekt een PHP functie door opeens je PHP blok af te sluiten. En dat kan niet.
Gewijzigd op 09/06/2021 21:57:18 door - Ariën -
 
Willem vp

Willem vp

10/06/2021 00:27:56
Quote Anchor link
- Ariën - op 09/06/2021 16:50:54:
Wat er er exact nu fout gaat is het volgende: Je onderbreekt een PHP functie door opeens je PHP blok af te sluiten. En dat kan niet.

Dat is niet wat er fout gaat, want ook in functies kun je een PHP-blok afsluiten. Uiteraard moet je het daarna wel weer opnieuw openen om de functie syntactisch netjes af te sluiten, maar dat gebeurt ook in de openingspost.

Waar volgens mij het probleem zit, is dat de callback-functie moet bestaan uit PHP-code. Nu krijgt 'ie echter HTML/JavaScript en daar verslikt de PHP-parser zich in.

Dit zou wellicht kunnen werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
   add_action( 'wp_footer', function(){ echo <<<'END_HTML'
   <script type="text/javascript">
      jQuery(document).ready(function($){
         $(document.body).on('click','.added_to_cart', function(e){
            e.preventDefault();
            $('.xoo-cp-basket').trigger('click');
         });
      });

   </script>

END_HTML;
   } );
?>

Let op dat de afsluitende END_HTML aan het begin van de regel *moet* staan (kolom 1 dus).
Gewijzigd op 10/06/2021 00:56:12 door Willem vp
 
Bas Driessen

Bas Driessen

10/06/2021 11:28:14
Quote Anchor link
Hallo Ariën en Willem , allereerst bedankt voor het meedenken en de berichten. Het wordt niet herkend als code nu als ik het opvoer door het stukje <<<'END_HTML'

Misschien door wat je zegt in de opmerking, maar heb het exact zo opgevoerd zoals je voorbeeld toegevoegd.
 
Ozzie PHP

Ozzie PHP

10/06/2021 12:12:01
Quote Anchor link
En op deze manier?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

add_action('wp_footer', function() {
  $js_code = '
    <script type="text/javascript">
      jQuery(document).ready(function($) {
        $(document.body).on("click", ".added_to_cart", function(e) {
          e.preventDefault();
          $(".xoo-cp-basket").trigger("click");
        });
      });
    </script>
  '
;
  echo $js_code;
});


?>
Gewijzigd op 10/06/2021 12:12:59 door Ozzie PHP
 
Bas Driessen

Bas Driessen

10/06/2021 15:36:55
Quote Anchor link
Hallo Ozzie,

Nee zelfde probleem.
 
- Ariën -
Beheerder

- Ariën -

10/06/2021 16:44:09
Quote Anchor link
Laad je wel de library van jQuery?
 
Ozzie PHP

Ozzie PHP

10/06/2021 17:52:28
Quote Anchor link
Bas Driessen op 10/06/2021 15:36:55:
Hallo Ozzie,

Nee zelfde probleem.

Heb je letterlijk mijn code gekopieerd en geplakt?

Zo ja, wat is precies het probleem. Komt er een foumelding in beeld? Of komt er helemaal niks in beeld?
 
Bas Driessen

Bas Driessen

10/06/2021 19:09:26
Quote Anchor link
Ariën en Ozzie ik moet jullie beide enorm bedanken. Door jullie opmerkingen ben ik er net achter gekomen. Het was inderdaad de jquery. Ik ging zoeken in de files en kwam tegen dat het laden van jQuery naar de footer was gezet. Misschien praat ik nu onzin, maar lijkt me dat die de plugin eerst aansprak en vervolgens de Jquery en dat het daarom niet werkte. excuses als dit extra moeite heeft gekost voor jullie. Ik waardeer dit enorm in ieder geval. Ik ben hier nog niet zo goed mee. Maar het werkt nu dus wel. En sneller bovendien. Ik heb dat JQuery naar footer gewoon weggehaald nu.



Toevoeging op 10/06/2021 19:56:23:

Ook Willem bedankt trouwens. Ik had een stukje combinatie code van stijl en script met hetzelfde probleem en het stukje code met "End Html" werkt daarvoor. Heb nu beide methodes gebruikt. Babystapjes, maar dit helpt me het meer te begrijpen. Dus nu zijn er 2 problemen opgelost met jullie hulp. Thanks a lot. Deze vraag is opgelost :)
Gewijzigd op 10/06/2021 19:57:01 door Bas Driessen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.