данные не отправляются в php из ajax

#php #javascript #jquery #ajax #json

#php #javascript #jquery #ajax #json

Вопрос:

привет
в приведенном ниже коде я хочу отправить электронное письмо (с вводимыми пользователем данными, в случае адреса электронной почты) в файл php, но

 $email = $_POST['email']; <<<<<<<<<<<< this retrieve nothing in the php file
  

js-файл

 <script type="text/javascript">
    $(document).ready(function() {
        $("#Form").submit(function() {
             $.ajax({
                 url: "data.php",
                 type: "post",
                 dataType: "json",
                 data: { email: $('#email').val()},
                 success: function(data) {
                     if () {
                         //something
                     } else {
                         //something
                     }
                 }
             });
             return false;
         });
    });
</script>
  

есть ли причина для этого?

я тестировал email="onePrivateEmail" на php, и проверка правильная, поэтому проблема в том, что электронное письмо не отправляется файлом js. Правильно?

Спасибо

форма:

 <form method="post" id="Form" action="">
                        <div>
                            <label for="name">Name</label> 
                            <input id="name" name="name" type="text" /> 
                            <span id="nameInfo">Insira o seu nome</span>
                        </div>
                        <div>
                            <label for="email">E-mail</label> 
                            <input id="email" name="email" type="text" /> 
                            <span id="emailInfo">Insira um email válido por favor!</span>
                        </div>
                        <div>
                            <label for="myPassword">Password</label> 
                            <input id="myPassword" name="myPassword" type="password" /> 
                            <span id="myPasswordInfo">Insira pelo menos 4 letras e sem espaços</span>
                            <div id="bar" style="width: 234px; height: 20px;"></div>
                        </div>
                        <div>
                            <label for="pass2">Confirm Password</label> 
                            <input id="pass2" name="pass2" type="password" /> 
                            <span id="pass2Info">Confirme a password</span>
                        </div>
                        <div></div>
                        <div>
                            <input id="send" name="send" type="submit" value="Send" />
                        </div>
  

как я уже сказал (перед удалением)

 <script type="text/javascript">
$(document).ready(function() {

   alert( $('#email').val() ); 

});
</script>
  

это ничего не показывает в предупреждении

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

1. не могли бы вы также опубликовать форму, пожалуйста … и просто как часть нет. Расширение Firefox под названием firebug — лучший друг веб-разработчиков, вы можете просматривать множество вещей, включая переменные post

2. как удаляется отредактированный код? это простой form man, не более того. и… да, я знаю firebug

3. «да, я знаю firebug» — итак, что вы видите в firebug? email Успешно отправлен запрос?

4. ошибка firebug показывает, что post-запрос отправлен успешно. А содержимое json равно {«validatEmail»:false} и должно быть true

5. Вы получаете какие-либо ошибки в вашей консоли?

Ответ №1:

вы не нацелены на нужную форму, которую хотите

  $("#customForm").submit(function() { ....
  

учитывая новую информацию, я подозреваю, что либо у вас не загружен jquery, либо вы что-то добавили во входные данные

вот демонстрационная версия, показывающая данные в eamil

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

1. вы правы. у меня ошибка в файле php. Теперь это работает. Спасибо!

2. @fel итак, jquery не загружался?, и ваше приветствие

3. лучше, проблема (баг) с логикой возвратов в функциях. js верен, да.

Ответ №2:

Я бы назначил email переменной и console.log(). Затем присвойте эту переменную паре ключ / значение электронной почты, указанной выше. Может помочь отследить вашу проблему. Обязательно проверьте свою консоль и убедитесь, что вы получаете ожидаемое значение.

 <script type="text/javascript">
$(document).ready(function() {
    var email = $('#email').val();
    console.log(email);
    $("#Form").submit(function() {
         $.ajax({
             url: "data.php",
             type: "post",
             dataType: "json",
             data: { email: email},
             success: function(data) {
                 if () {
                     //something
                 } else {
                     //something
                 }
             }
         });
         return false;
     });
});
  

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

1. Это бессмысленно, поскольку он уже знает о firebug, таким образом, может видеть, что на самом деле было отправлено.

2. я получаю это: (пустая строка)

3. @zerkms Я не считаю это бессмысленным, потому что вы не можете делать предположения, которые вы делаете. Если приведенный выше ответ mcgrailm верен, он ничего не видел через firebug. Это упрощает устранение неполадок, поскольку вы будете записывать значение в консоль и сможете навести указатель мыши на переменную, чтобы увидеть ее значение в firebug.

4. @Fel Я думаю, что у mcgrailm есть правильный ответ выше. Ваш селектор jQuery необходимо исправить, чтобы он указывал на #customForm, а не на #Form. Предполагая, что все, что вы вставили сюда, является точным.

5. названия форм указаны правильно. Это моя ошибка, когда я делаю post. Проблема не в этом. Я повторяю — это моя ошибка, когда я делаю copy-paste!