Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Javascript - Errore barra di ricerca
Forum - Javascript - Errore barra di ricerca

Avatar
Djot (Normal User)
Rookie


Messaggi: 28
Iscritto: 14/02/2017

Segnala al moderatore
Postato alle 17:44
Giovedì, 08/11/2018
Salve a tutti,
Sto sviluppando una piccola pagina con una barra di ricerca, l'utente inserisce una qualsiasi parola, e il sito riporta i primi 5 video di youtube con tale parola chiave (in base al numero di visualizzazioni).
Il problema è che ciò non avviene, ogni volta che viene digitata una qualsiasi parola sulla barra di ricerca la console riporta l'errore:

TypeError: Cannot read property 'search' of undefined
app.js:6
    at HTMLFormElement.<anonymous> (file:///..../app.js:6:42)

Vi allego qui sotto il sorgente della parte Javascript, se potete darmi delle spiegazioni ve ne sarei molto grato.

Codice sorgente - presumibilmente Javascript

  1. function tplawesome(e,t){res=e;for(var n=0;n<t.length;n++){res=res.replace(/\{\{(.*?)\}\}/g,function(e,r){return t[n][r]})}return res}
  2.  
  3. $(function() {
  4.     $("form").on("submit", function(e) {
  5.        e.preventDefault();
  6.        var request = gapi.client.youtube.search.list({
  7.             part: "snippet",
  8.             type: "video",
  9.             q: encodeURIComponent($("#search").val()).replace(/%20/g, "+"),
  10.             maxResults: 5,
  11.             order: "viewCount",
  12.        });
  13.        request.execute(function(response) {
  14.           var results = response.result;
  15.           $("#results").html("");
  16.           $.each(results.items, function(index, item) {
  17.             $.get("tpl/item.html", function(data) {
  18.                 $("#results").append(tplawesome(data, [{"title":item.snippet.title, "videoid":item.id.videoId}]));
  19.             });
  20.           });
  21.           resetVideoHeight();
  22.        });
  23.     });
  24.    
  25.     $(window).on("resize", resetVideoHeight);
  26. });
  27.  
  28. function resetVideoHeight() {
  29.     $(".video").css("height", $("#results").width() * 9/16);
  30. }
  31.  
  32. function init() {
  33.     gapi.client.setApiKey("AIzaSyAN11KrZnAJtWZe8JFV5lpPRsDOQWzOkV8");
  34.     gapi.client.load("youtube", "v3", function() {
  35.     });
  36. }


PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 21:47
Giovedì, 08/11/2018
è normale che la funzione  res.replace non abbia il doppio apice? 8-|

in più, più che un replace quello mi sembra un Regex.


{res=res.replace(/\{\{(.*?)\}\}/g,function(e,r){return t[n][r]})}return res}

Ti consiglio di rivedere bene questa funzione  res.replace.

Ultima modifica effettuata da Thejuster il 08/11/2018 alle 21:49


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Djot (Normal User)
Rookie


Messaggi: 28
Iscritto: 14/02/2017

Segnala al moderatore
Postato alle 23:03
Giovedì, 08/11/2018
Codice sorgente - presumibilmente Plain Text

  1. {res=res.replace("/{{(.*?)}}/g","function(e,r){return t[n][r]}")}return res}



In questo modo intendi?

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 10:47
Venerdì, 09/11/2018
Si ma comunque a mio parere è sbagliato.

Esegui un replace come fosse un regex.
Quella stringa in replace dovrebbe stare in un regex.

Cerca online javascript regex.

Ed il risultato lo recupera in automatico


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Djot (Normal User)
Rookie


Messaggi: 28
Iscritto: 14/02/2017

Segnala al moderatore
Postato alle 12:05
Venerdì, 09/11/2018
Quindi dovrei usare un regex al posto del replace?

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 20:30
Venerdì, 09/11/2018
Si ma...

Devi sapere che ci vuoi fare.

esiste compile, exec, test e ToString.

Dipende cosa vuoi che quella funzione faccia.
Ti consiglio di dare una lettura prima alla documentazione di quell'esempio se ne ha una.
O di leggerti una guida in javascript per il regex e capire cosa ti server per ottenere quello che cerchi di fare.


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote