Передача аргументов из одной функции в другую

#javascript

#javascript

Вопрос:

Здесь я разрабатывал chat приложение. Здесь я хочу загружать chat messages в соответствии с email address пользователем. Здесь я хочу перейти email address к серверной части.

В javascript , я хочу передать электронную почту LoadChat функции из (".friend").each(function(x){ . Это отображается console.log в LoadChat функции in, сразу же становится undefined .

Вот Javascript код

      $(".friend").each(function(x){     
          $(this).click(function(){
                        
              var name = $(this).find("p strong").html();
              var email = $(this).find("p span").html();
              var id = $(this).find("p spans").html();
                    
              LoadChat(email);
                                                
              $("#profile p").html(name);
              $("#profile span").html(email);           
              
              $(".message").not(".right").find("img").attr("src", $(clone).attr("src"));                                    
              $('#friendslist').fadeOut();
              $('#chatview').fadeIn();
                 
          setTimeout(function(){
          $('#chatview').fadeOut();
          $('#friendslist').fadeIn();               
       }, 50);            
    });              
   });
}); 
  

Вот другая LoadChat функция

 <script type="text/javascript">
    LoadChat();
    
    setInterval(function () {
        LoadChat();
    }, 1000);

    function LoadChat(email) {
        
console.log(email);
$.post('handlers/messages.php?action=getMessagesamp;email=' email, function (response) {

    var scrollpos = $('#chat-messages').scrollTop();
    var scrollpos = parseInt(scrollpos)   420;
    var scrollHeight = $('#chat-messages').prop('scrollHeight');

    $('#chat-messages').html(response);
    if (scrollpos < scrollHeight){

    } else{
        $('#chat-messages').scrollTop($('#chat-messages').prop('scrollHeight'));
    }

})

}

    $('form').submit(function () {
        //alert('form is submit jquery');
        var message = $('.textarea').val();

        if ($(".textarea").val()) {

        $.post('handlers/messages.php?action=sendMessageamp;message=' message, function (response) {
            //alert(response);
            if (response==1){
                LoadChat();
                document.getElementById('msgform').reset();
            }
        });

    } else {

        myFunction();

}
        return false;

    })
</script>
  

Любая помощь может быть высоко оценена

Комментарии:

1. В функции LoadChat, function LoadChat(email) { .

Ответ №1:

Вы вызываете LoadChat() без аргументов в нескольких местах. Вызов функции без аргументов установит ее аргументы undefined равными, если они у нее есть. Если вы хотите email , чтобы значение было установлено, укажите его в качестве аргумента при вызове функции.

 function LoadChat(email) {
  console.log(email);
}

// call without arguments
LoadChat();

// call with arguments
LoadChat("john.doe@example.com");  

Комментарии:

1. Другое дело, что я хочу передать email переменную $('form').submit(function () { для отправки email php кому. Как это возможно?

2. Добавьте его в параметр запроса или тело вашего запроса к серверу, например: $.post("handlers/messages.php", {action: "sendMessage", message: message, email: email}, function (response) { /* ... */ })

3. Я имею в виду, как я могу передать email захват submit function для отправки

4. Вам придется подумать о том, чего вы хотите. Как форма узнает, какое электронное письмо передать на сервер? Пользователь отправляет электронное письмо через форму? Можно ли извлечь его со страницы? Если JavaScript генерируется одним и тем же сервером, вы можете определить его глобально. Для приложений чата часто используется сеанс, который сохраняется и отправляется через cookie. Сервер может вывести электронное письмо из сеанса.

5. Извлечение со страницы в большинстве случаев не является оптимальным. Вопрос в том, как данные попали туда для начала? Если вы найдете, где заданы данные, вы также сможете предоставить их в свое событие отправки. Например, если он сгенерирован php, например, с помощью шаблона <p><?= htmlspecialchars($user_email) $></p> , тогда вы могли бы аналогичным образом установить значение email в JavaScript. const email = <?= json_encode($user_email) ?>