2
votes

$ ("# input"). val () retournant undefined lors de l'utilisation de $ .post ()

Je me sens idiot de ne pas pouvoir résoudre cela, mais je continue à avoir ma demande de publication comme non définie sur la ligne $ ('# input'). val (). Quelqu'un peut-il m'aider à résoudre ce problème?

<html>
  <head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script>
      let sr = $("#input").val();
      $(document).ready(function(){
        $("button").click(function(){
          $.post("http://localhost:8080/", {subreddit: sr}, function(data, status){
            alert("Data: " + data + "\nStatus: " + status);
          });
        });
      });
    </script>
  </head>
  <body>
    <div id='content' style="height:100%, width:100%">
        <input id='input' type="text" placeholder='enter subreddit'/>
        <button>Search</button>
      </form>
    </div>
  </body>
</html>


0 commentaires

3 Réponses :


1
votes

C'est parce que cette partie de votre script est en cours d'exécution avant le chargement de votre DOM. Déplacez-le dans votre $(document).ready():

$(document).ready(function() {
    let sr = $("#input").val();
    //Rest of your code
});


0 commentaires

1
votes

La partie let sr = $ ("# input"). val (); de votre script doit s'exécuter lorsque vous cliquez sur le bouton.

Déplacez-la dans le gestionnaire de clics comme ceci:

$(document).ready(function() {
  $("button").click(function(){
    let sr = $("#input").val();
    $.post("http://localhost:8080/", {subreddit: sr}, function(data, status){
      alert("Data: " + data + "\nStatus: " + status);
    });
  });
});


1 commentaires

Je l'ai déplacé dans le gestionnaire de clics, mais il retourne toujours undefined.



0
votes

Mon problème concernait en fait le backend. Il a continué à retourner indéfini parce que je n'ai pas appelé la méthode .toString (). Merci pour l'aide.


0 commentaires