2015-09-22 2 views
0

hyAjax не получает данные правильно

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

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>index</title> 
    <link rel="stylesheet" href="css/bootstrap.css"/> 

</head> 

<body> 
<div> 

    <form action="voteupdown.php" id="form" method="post"> 
     <input type="text" name="fname" id="fname" class="form-control"/><br/> 
     <input type="text" name="lname" id="lname" class="form-control"/><br/> 
     <input type="submit" name="submit" id="submit" value="Submit"/> 
    </form> 

    <div id="result"> 

    </div> 

</div> 



<script src="js/jquery.js"></script> 
<script> 
    $(document).ready(function(){ 
     $('#form').submit(function(){ 
      return false; 
     }); 
     $("#submit").click(function(){ 
      $.get(("voteupdown.php"), function (data) { 
       $("#result").html(data); 
      }); 
     }); 
    }); 

</script> 
<script src="js/bootstrap.js"></script> 
</body> 
</html> 

в voteupdown.php

<?php 

    $name = $_POST['fname']; 
    $lname = $_POST['lname']; 
echo $name; 

?> 

, когда я просто echo " hy this is test" в моем voteupdown.php тогда код будет работать, но когда я пытаюсь повторить первый и фамилия, тогда он покажет ошибку ниже.

Notice: Undefined index: fname in G:\xampp\htdocs\Questiona-Step1\voteupdown.php on line 3 

Notice: Undefined index: lname in G:\xampp\htdocs\Questiona-Step1\voteupdown.php on line 4 

Любая помощь будет оценена по достоинству.

+1

Используйте 'пост/ajax' для отправки данных на сервер вместо' get' – Tushar

+0

также если у вас есть ajax, вы можете удалить форму action – guradio

ответ

1

Ваш сценарий на стороне сервера ожидает, что данные будут отправлены ему, ваш javascript отправит запрос GET. Кроме того, ваш запрос GET фактически не содержит никаких данных.

Предполагая, что вы хотите сохранить на стороне сервера, ожидая POST, вы должны изменить JavaScript следующим образом

$("#submit").click(function(){ 
     var fname = $('#fname').val(); 
     var lname = $('#lname').val(); 
     $.post("voteupdown.php"), { 
      fname: fname, 
      lname: lname 
     },function (data) { 
      $("#result").html(data); 
     }); 
    }); 
1

Ваш код не работает, потому что ваш PHP ожидает данные в переменной $_POST.
Вы также не отправляете какие-либо данные своей формы в файл PHP.
Попробуйте следующее:

$('body').on('submit', '#form', function(event) { 

    event.preventDefault(); 

    var formData = $(this).serialize(); 

    $.ajax({ 
     url: 'voteupdown.php', 
     type: 'post', 
     data: formData, 
     success: function(result) { 
      $('#result').html(result); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      # error handling here 
     } 
    }); 

}); 
+1

Мне это нравится. Это лучше, чем мой ответ, когда я пытался сохранить код как можно ближе к оригиналу OP. Это точно, как я это сделал. – Jamiec

0

Используйте этот код в вашей форме представить вызов:

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

     $.post(("voteupdown.php"), 

     { 
     fname: $("#fname").val(), 
      lname: $("#lname").val() 
    }, 

     function (data) 
     { 
      $("#result").html(data); 
     }); 
}); 
0
You are using $.get method for ajax and you are trying to get val by $_POST. because of this you got this error. Try This hopefully it will help you: 

$.post("voteupdown.php", { fname: $("#fname").val(), lname: $("#lname").val() }, function(data) { 
    $("#result").html(data); 
}); 

or if you wants to get response in json format than use this 

$.post("voteupdown.php", { fname: $("#fname").val(), lname: $("#lname").val() }, function(data) { 
    $("#result").html(data); 
}, "json"); 
Смежные вопросы