Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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: 27
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. }



-Djot
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1879
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


PM Quote
Avatar
Djot (Normal User)
Rookie


Messaggi: 27
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?


-Djot
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1879
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


PM Quote
Avatar
Djot (Normal User)
Rookie


Messaggi: 27
Iscritto: 14/02/2017

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


-Djot
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1879
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.


PM Quote