Я пытаюсь передать переменную из javascript в переменную PHP на той же странице, используя AJAX.
Я просматривал все сообщения, которые мог найти, и хотя меня несколько раз спрашивали (как передать переменную javascript в php через ajax), я не могу заставить его работать.
Вот что я пробовал из того, что я читал из других сообщений. Но это не работает.
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script>
$('#submitfakta').live('mouseover mouseout', function(e) {
if (e.type == 'mouseover') {
var idAttr = $(this).attr('value');
//alert($(this).attr('id'));
$.ajax({
type: "POST",
url: 'profile.php',
data: idAttr : idAttr
success: function(data)
{
alert("success!");
}
});
});
}
});
</script>
Это только мой код javascript без использования AJAX. Он работает правильно для получения моей переменной с помощью javascript. Но в нем отсутствует часть, которая отправляет переменную в переменную php на той же странице. Просматривая другие сообщения, я попытался использовать AJAX в качестве примера выше, но, как уже упоминалось, безуспешно.
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script>
$('#submitfakta').live('mouseover mouseout', function(e) {
if (e.type == 'mouseover') {
var idAttr = $(this).attr('value');
alert(idAttr);
}
});
</script>
Мой PHP-код пытается напечатать мою переменную:
<?php
$idAttr = $_POST['idAttr'];
echo $idAttr;
?>
Опасно: срок службы jQuery 1.5.x истек, и у него есть известные проблемы с безопасностью. Обновите до поддерживаемой версии jQuery.
@RoryMcCrossan Теперь я попытался обновить и заменить live() на on(), но теперь мой javascript без ajax не работает. Буду признателен, если вы не закроете мой пост? Я пытаюсь понять, как это работает, и изменение моей опечатки данных тоже не заставляет это работать.
Если у вас возникли проблемы с обновлением версии jQuery, я бы предложил начать новый вопрос, обязательно включив сведения о любых ошибках консоли и весь код, относящийся к этой ошибке.
Моя основная проблема заключается в том, чтобы получить мою переменную из моего javascript (который сам javascript работает без AJAX) и каким-то образом передать эту переменную через AJAX в мою переменную PHP. Я делаю этот проект локально, и проблемы с безопасностью, на которые указывает Квентин, не являются проблемой в такой степени, как решение проблемы, которую предлагает мой пост здесь.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


попробуйте отправить такие данные (данные должны быть простым объектом или строкой)
data: {idAttr : idAttr}
и войти в php
$idAttr = $_POST['idAttr']
Вот мой код HTML и JS!
<div id = "submitfakta" value = "abdulrehman" style = "height: 200px; width: 200px; background-color: red;"></div>
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script>
$('#submitfakta').live('mouseover mouseout', function(e) {
if (e.type == 'mouseover') {
var idAttr = $(this).attr('value');
//alert($(this).attr('id'));
$.ajax({
type: "POST",
url: 'profile.php',
data: {idAttr : idAttr },
success: function(data)
{
alert("success! " + data);
}
});
}
});
</script>
И ВОТ МОЙ КОД profile.php:
<?php
echo $_POST["idAttr"]; exit;
Это не работает. Спасибо, что предложили свою помощь, я ценю это.
Как это возможно, должно работать. Скажи мне, что случилось ? вы получили какую-либо ошибку или что-то? Покажи мне, пожалуйста, чтобы я мог тебе помочь
Просто теперь ничего не происходит, когда я навожу курсор на свою кнопку. Я использую javascript, чтобы навести курсор на кнопку, получить значение, и значение — это то, что я хочу получить в переменной php, чтобы я мог использовать его для SQL-запроса. Если я использую свой скрипт без ajax, при наведении курсора на кнопку я получаю окно предупреждения, показывающее значение.
Значит, тебе больше не нужна помощь, верно? Вы сделали самостоятельно с другим трюком?
Нет, мне все еще нужна помощь с преобразованием переменной из javascript в переменную php.
вы получаете какие-либо ошибки в вашей консоли? @Chao1920
@ Ари Нет ошибок. Первая часть моего javascript все еще работает: отображение окна предупреждения о правильном значении при наведении курсора на кнопку. Но $_POST['idAttr'] пуст.
возможно, проблема заключается в вашем php-коде. Не могли бы вы обновить свой пост, включив в него код php? @Chao1920
@ Ари у меня есть сейчас. Ценю вашу помощь
Проверьте, я отредактировал свой ответ, и он отлично работает на моей стороне. Я только что создал файл index.html и поместил свой html div со значением атрибута, а затем разместил ваш код js. Затем я создал файл profile.php, и он отлично работает.
Вы должны отправить данные как
data: {var1: value1, var2 : value2}
У вас есть следующее, что неверно
data: idAttr : idAttr
Вы также можете передать эти данные, как в jquery,
data : "idAttr = "+ idAttr;
И на стороне PHP
$idAttr = $_POST['idAttr'];
Вам нужно указать значение
dataкак объект:data: { idAttr: idAttr }. Голосование за закрытие как опечатка. Также обратите внимание, что jQuery 1.5.2 устарел на очень (вы должны использовать как минимум 1.12.1), а такжеlive()устарел. Вместо этого используйте делегированную подписьon().