Проблема с передачей переменной javascript в переменную PHP через AJAX

Я пытаюсь передать переменную из 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;
  ?>

Вам нужно указать значение data как объект: data: { idAttr: idAttr }. Голосование за закрытие как опечатка. Также обратите внимание, что jQuery 1.5.2 устарел на очень (вы должны использовать как минимум 1.12.1), а также live() устарел. Вместо этого используйте делегированную подпись on().

Rory McCrossan 25.02.2019 12:39

Опасно: срок службы jQuery 1.5.x истек, и у него есть известные проблемы с безопасностью. Обновите до поддерживаемой версии jQuery.

Quentin 25.02.2019 12:40

@RoryMcCrossan Теперь я попытался обновить и заменить live() на on(), но теперь мой javascript без ajax не работает. Буду признателен, если вы не закроете мой пост? Я пытаюсь понять, как это работает, и изменение моей опечатки данных тоже не заставляет это работать.

Chao1920 25.02.2019 12:51

Если у вас возникли проблемы с обновлением версии jQuery, я бы предложил начать новый вопрос, обязательно включив сведения о любых ошибках консоли и весь код, относящийся к этой ошибке.

Rory McCrossan 25.02.2019 12:52

Моя основная проблема заключается в том, чтобы получить мою переменную из моего javascript (который сам javascript работает без AJAX) и каким-то образом передать эту переменную через AJAX в мою переменную PHP. Я делаю этот проект локально, и проблемы с безопасностью, на которые указывает Квентин, не являются проблемой в такой степени, как решение проблемы, которую предлагает мой пост здесь.

Chao1920 25.02.2019 13:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
5
156
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

попробуйте отправить такие данные (данные должны быть простым объектом или строкой)

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; 

Это не работает. Спасибо, что предложили свою помощь, я ценю это.

Chao1920 25.02.2019 12:52

Как это возможно, должно работать. Скажи мне, что случилось ? вы получили какую-либо ошибку или что-то? Покажи мне, пожалуйста, чтобы я мог тебе помочь

Abdulrehman Sheikh 25.02.2019 12:55

Просто теперь ничего не происходит, когда я навожу курсор на свою кнопку. Я использую javascript, чтобы навести курсор на кнопку, получить значение, и значение — это то, что я хочу получить в переменной php, чтобы я мог использовать его для SQL-запроса. Если я использую свой скрипт без ajax, при наведении курсора на кнопку я получаю окно предупреждения, показывающее значение.

Chao1920 25.02.2019 12:59

Значит, тебе больше не нужна помощь, верно? Вы сделали самостоятельно с другим трюком?

Abdulrehman Sheikh 25.02.2019 13:13

Нет, мне все еще нужна помощь с преобразованием переменной из javascript в переменную php.

Chao1920 25.02.2019 13:15

вы получаете какие-либо ошибки в вашей консоли? @Chao1920

Ari 25.02.2019 13:16

@ Ари Нет ошибок. Первая часть моего javascript все еще работает: отображение окна предупреждения о правильном значении при наведении курсора на кнопку. Но $_POST['idAttr'] пуст.

Chao1920 25.02.2019 13:21

возможно, проблема заключается в вашем php-коде. Не могли бы вы обновить свой пост, включив в него код php? @Chao1920

Ari 25.02.2019 13:23

@ Ари у меня есть сейчас. Ценю вашу помощь

Chao1920 25.02.2019 13:27

Проверьте, я отредактировал свой ответ, и он отлично работает на моей стороне. Я только что создал файл index.html и поместил свой html div со значением атрибута, а затем разместил ваш код js. Затем я создал файл profile.php, и он отлично работает.

Abdulrehman Sheikh 25.02.2019 13:30

Вы должны отправить данные как

data: {var1: value1, var2 : value2}

У вас есть следующее, что неверно

data: idAttr : idAttr

Вы также можете передать эти данные, как в jquery,

data : "idAttr  = "+ idAttr;

И на стороне PHP

$idAttr = $_POST['idAttr'];

Другие вопросы по теме