2016-01-17 4 views
0

Ниже мой Php файл, откуда я называю для файла другой PHP с помощью ajax, чтобы получить некоторые данные после того, как подать кнопку:Ничто не возвращается после того, как Ajax вызова

<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
    </head> 

    <body> 

     <form enctype=""> 
      <button class="refresh"> submit </button> 
      <input placeholder="text here" name="roll" > 

     </form> 

      <script> 

       $(document).ready(function(){ 

        $('.refresh').click(function(){ 
         // var formData = new FormData($(this)[0]); 
         //event.preventDefault(); 
         $.ajax({ 
          url:'ajax.php', 
          type:'POST', 
          data:{roll:'rana'}, 
          //async:false, 
          success:function(response){ 
           alert(response); 
           //document.write(response); 
          }, 
          cache:false, 
          contentType:false, 
          processData:false 
         });return fasle; 
        });        
    }); 
      </script> 


    </body> 
    </html> 

другой файл РНР:

<?php 
echo 'rana'; 
echo $_POST["roll"]; 
?> 

Когда я пишу какой-то текст и нажимаю кнопку отправки, текст поля ввода отображается в URL-адресе и не получает никаких данных из другого php-файла. Зачем? Может ли кто-нибудь дать мне подсказку или помощь? Спасибо.

+0

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

ответ

0

После того, как вы нажмете на кнопку, будет отправлена ​​форма, вам необходимо остановить это поведение, используя метод preventDefault(). Заменить скрипт со следующим:

<script> 

      $(document).ready(function(){ 

       $('.refresh').click(function(e){ 
        e.preventDefault(); // this line will prevent submission of form 
        // var formData = new FormData($(this)[0]); 
        //event.preventDefault(); 
        $.ajax({ 
         url:'ajax.php', 
         type:'POST', 
         // data:{roll:'rana'}, 
         //async:false, 
         success:function(response){ 
          alert(response); 
          //document.write(response); 
         }, 
         cache:false, 
         contentType:false, 
         processData:false 
        });return fasle; 
       });        
}); 
     </script> 
+0

Спасибо, что теперь он работает только в ответ на успех, но я не могу отправить данные и вернуть их после обработки в php-файле –

+0

раскомментировать эту строку: // данные: {roll: 'rana'}, 'и изменить его на 'data: {roll: $ ('input [name =" roll "]'). val();},' –

+1

Использование $ ('input [name = "roll"]'). val(); медленнее и не рекомендуется, с использованием $ ('# roll'). val() и смена имени на id лучше в большинстве случаев. –

0

Вы не получаете никаких данных POST в файл ajax.php, потому что их нет, то data объекта в вашем запросе АЯКСА пуст и закомментировано.

Вопреки тому, что можно было ожидать, ваши значения формы не могут просто быть отправлены через POST в файл PHP, аналогично использованию action="file.php method="post", потому что в AJAX вы должны вручную «построить» на data объект, который будет отправлен в качестве Запрос POST.

Вот как это будет работать:

Форма файла:

<form> 
    <input placeholder="text here" id="string"> 
    <input type="submit" class="refresh" value="submit"> 
</form> 

<script> 
$(document).ready(function() { 
    $('.refresh').click(function(e) { 
    e.preventDefault(); 
     $.ajax(
     { 
      url:'ajax.php', 
      type:'POST', 
      data:{ 
       string: $('#string').val() 
      }, 
      success:function(response) { 
       alert(response); 
      } 
     } 
     ); 
    }); 
}); 
</script> 

Backend файл:

<?php 
echo $_POST['string']; 
?> 

Обратите внимание, как я назвал вход по id вместо name и извлечено значение через $('#string').val() t и назначил его string, который отправляется через запрос POST. Вы должны сделать то же самое для каждого поля ввода в своей форме.

Кроме того, вам не нужны эти:

cache:false, 
contentType:false, 
processData:false 

Из-за причин.

+0

спасибо много. Я решил по вашему предложению. –

+0

Пожалуйста, отметьте мой ответ как правильный ответ и повысьте его, чтобы другие не могли воспользоваться помощью, и вы также получите очки репутации за это. –

Смежные вопросы