Передача переменной в PHP-скрипт с помощью AJAX

#javascript #php #ajax

#javascript #php #ajax

Вопрос:

 <!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Example Ajax PHP Form</title>
        <script type="text/javascript" src="//code.jquery.com/jquery-2.1.0.min.js"></script>
    </head>
    <body>
        
        <form id="my_form_id">
            Your Email Address: <input type="text" id="email" /><br>
            <input type="button" id="ddd">
        </form>
        
        
        <script>
            $(document).ready(function(){
                $('#ddd').click(function(e){
                    //Stop the form from submitting itself to the server.
                    e.preventDefault();
                    var email = $('#email').val();
                    console.log(email);
                    $.ajax({
                        type: 'post',
                        url: 'http://localhost/script.php',
                        data: {email: email},
                        success: function(data){
                          alert(data);  
                        }
                    });
                });
            });
        </script>
    </body>
</html>
  

Выше приведен код из моего index.php досье. Моя цель — передать адрес электронной почты с этой страницы php на другую страницу под названием script.php . Мой script.php код — это:

 <?php
session_start();

$emailAddress = '';
if(isset($_POST['ddd'])){
    $emailAddress = $_POST['email'];
    echo "hi";
}

echo 'Received email was: ' .$emailAddress;
?>
  

Когда я запускаю свой index.php код он отображает оповещение с адресом электронной почты, который успешно передается с помощью функции AJAX. Однако, когда я обновляю свой script.php страница на ней не отображается адрес электронной почты. Я пытаюсь отобразить адрес электронной почты на script.php страницу, чтобы я мог вставить ее в инструкцию sql. Буду признателен за любую информацию о том, что я делаю неправильно.

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

1. Вы должны иметь возможность получить доступ к адресу электронной почты в вашем PHP, активированном Ajax $_POST['email'] . Однако, $_POST['ddd'] не будет установлено.

2. Вы не передаете ddd , вы передаете только переменную с именем email -> data: {email: email},

3. Измените кнопку на type='submit' и измените $('#ddd').click на $('#my_form_id').submit . Вы не запрещаете отправку по умолчанию, вы делаете это по нажатию кнопки, поэтому страница перезагружается. Лично я просто не стал бы использовать форму. Мне не нравится, что они делают на мобильных устройствах, когда кнопка ввода переходит на кнопку вкладки. Кроме того, вам нужно протестировать $_POST['email'] вместо $_POST['ddd'] , как указано в @GrumpyCrouton .

4. @StackSlave я изменил кнопку на type='submit' и $('#ddd').click на $('#my_form_id').submit . Однако результат по-прежнему не отображается на script.php страница. Есть ли что-то еще, что я все еще делаю неправильно?

5. Вы должны просто использовать url:'script.php' … но проблема не в этом. Просто потому, что у вас ранее был результат AJAX, отображаемый на странице, он не остается там автоматически (пока у клиента есть подключение к Интернету) при перезагрузке страницы. JavaScript запускается заново при перезагрузке страницы. В этом случае вам нужно где-то хранить информацию. Используйте localStorge или базу данных.

Ответ №1:

Изменение типа вашей кнопки на submit не помогает в ajax. Все, что вам нужно, это их идентификаторы.

Результат изображения

А также вам не нужен ajax для вашей ситуации. Вам просто нужно это window.location= , чтобы перенаправить данные на ваш script.php

Это будет ваш index.php

 <!DOCTYPE html>
  <html>
     <head>
       <meta charset="UTF-8">
       <title>Example Ajax PHP Form</title>
       <script type="text/javascript" src="//code.jquery.com/jquery-2.1.0.min.js"></script>
     </head>
   <body>
      <form id="my_form_id">
          Your Email Address: <input type="text" id="email"  /><br>
          <input type="button" id="ddd">
      </form>
      <script>
        $(document).ready(function()
        {
            $('#ddd').click(function()
            {
                var email = $('#email').val();
                window.location="script.php?email="   email;
            });
        });
      </script>
    </body>
 </html>
  

И тогда это будет вашим script.php . Я удалил ваше условие if, потому что оно не позволяет отображать данные вашей электронной почты. СООБЩЕНИЕ будет изменено на ЗАПРОС для получения данных из URL.

  <?php 
   session_start();
   $emailAddress = $_REQUEST['email']; 
   echo 'Received email was: ' .$emailAddress;
 ?>
  

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

1. @prince спасибо за вашу помощь. Я попытался реализовать предложенные вами изменения, однако он по-прежнему не отображает мою электронную почту на script.php страница. Есть ли что-нибудь еще, что я мог делать неправильно?

2. Я отредактировал и написал весь ваш index.php файл и script.php досье. Надеюсь, это сработает.

3. @prince это все еще не работает. Есть ли что-нибудь еще, что, по вашему мнению, идет не так?

4. Я пытаюсь передать переменную email, чтобы она отображалась на script.php страница. Моя цель — вставить эту переменную email в sql-запрос на script.php страница.

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

Ответ №2:

Если вам нужен только 1 php-файл, сделайте это. Пожалуйста, ознакомьтесь с изменениями. Изменение типа вашей кнопки на submit является обязательным, а также method=POST в вашей форме. Нет необходимости id , просто name .

 <!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8">
      <title>Example Ajax PHP Form</title>
  </head>
  <body>
      <form method="POST">
         Your Email Address: <input type="text" name="email" /><br>
         <input type="submit" name="ddd">
      </form>
  </body>
</html>

<?php
   session_start();
   if (isset($_POST['ddd']))
   {
       $emailAddress = $_POST['email'];
       echo 'Received email was: ' .$emailAddress;
   }
?>
  

Ответ №3:

Пожалуйста, измените ввод на button type=»submit», затем в javascript, пожалуйста, проверьте .нажмите, чтобы отправить

Ответ №4:

ваш вопрос по-прежнему не ясен, скрипт, который вы предоставляете, работает отлично..

но во второй части вашего вопроса :

Когда я запускаю свой index.php код он отображает оповещение с адресом электронной почты, который успешно передается с помощью функции AJAX. Однако, когда я обновляю свой script.php страница на ней не отображается адрес электронной почты. Я пытаюсь отобразить адрес электронной почты на script.php страницу, чтобы я мог вставить ее в инструкцию sql. Буду признателен за любую информацию о том, что я делаю неправильно.

это верно после того, как успех ajax предупредит данные. но ваш вопрос после обновления script.php в нем должен отображаться адрес электронной почты…

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

Третьи части

поэтому я мог бы вставить ее в оператор sql

почему вы хотите отобразить адрес электронной почты и после этого хотите вставить в базу данных .. вы можете напрямую вставить в базу данных после успеха ajax.. пример не используйте его.

 $sql = "INSERT INTO table ".
               "(email) "."VALUES ".
               "('$email')";
               mysql_select_db('SOMEDB');
            $res = mysql_query( $sql, $conn );
         
            if(! $res ) {
               die('Could not enter data: ' . mysql_error());
            }
         
            echo "Entered data successfullyn";
            mysql_close($conn);