#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. Другое дело, что я хочу передать
$('form').submit(function () {
для отправкиphp
кому. Как это возможно?2. Добавьте его в параметр запроса или тело вашего запроса к серверу, например:
$.post("handlers/messages.php", {action: "sendMessage", message: message, email: email}, function (response) { /* ... */ })
3. Я имею в виду, как я могу передать
submit function
для отправки4. Вам придется подумать о том, чего вы хотите. Как форма узнает, какое электронное письмо передать на сервер? Пользователь отправляет электронное письмо через форму? Можно ли извлечь его со страницы? Если JavaScript генерируется одним и тем же сервером, вы можете определить его глобально. Для приложений чата часто используется сеанс, который сохраняется и отправляется через cookie. Сервер может вывести электронное письмо из сеанса.
5. Извлечение со страницы в большинстве случаев не является оптимальным. Вопрос в том, как данные попали туда для начала? Если вы найдете, где заданы данные, вы также сможете предоставить их в свое событие отправки. Например, если он сгенерирован php, например, с помощью шаблона
<p><?= htmlspecialchars($user_email) $></p>
, тогда вы могли бы аналогичным образом установить значениеconst email = <?= json_encode($user_email) ?>