2017-02-22 24 views
1

Я пытаюсь вывести строку в базе данных, которая соответствует имени и фамилии учащегося из выпадающего списка. У меня есть функция, хранящая первое имя и фамилию в переменной clickeditem. Я должен ошибаться в аспектах Ajax/php, возможно, в том, как обращаться к переменной? Когда я нажимаю имя в раскрывающемся списке, ничего не происходит вообще. Также я повторяю «результат» в файле php, как мне изменить это, чтобы ajax мог справиться с «успехом»? Код с HTML и AJAX:Ajax запрос на php-файл для вывода данных mysql

<script 

     $.ajax({ 
       type: "POST", 
       url: "out.php",    
       data: {item : item},    
       success: function(data){      
        $("#result").html(data); 
        //alert(response); 
       } 

       }); 
    }); 
</script> 

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

+0

[Вы смотрели запрос/ответ AJAX в инструментах разработчика браузера? Включили ли вы библиотеку jQuery в проект? Есть ли сообщения об ошибках? Вы запускаете это на веб-сервере?] (Http://jayblanchard.net/basics_of_jquery_ajax.html) –

+0

PHP должен что-то повторять, так как все, что эхо, возвращается AJAX. –

+0

@JayBlanchard - это jquery libray, который не включен, где я написал '', и это выполняется на локальном хосте – Jub

ответ

2

Вы создали тест, который заставит остальную часть вашего кода на провал:

$student = isset($_POST['clickeditem']); 

$student будет либо «истина» или «ложь», а не строка, содержащая первый и фамилия. На этом этапе ваш код не сработает. Измените строку следующим образом:

$student = $_POST['clickeditem']; 

Теперь $student установлен правильно, а остальная часть кода должна работать, как вы ожидаете.

У вас также есть ошибка в самом запросе (запятая, где и должны идти):

WHERE student_forename=:forename, student_surname=:surname'); 

должно быть:

WHERE student_forename=:forename AND student_surname=:surname'); 

Одна последняя вещь: вы не можете echo $result;, потому что это массив в этом разделе вашего кода:

if($result['count'] == 1){ 
    echo $result; 
} 

Вы должны либо echo $result['count']; или echo $result[0]; или преобразовать массив в другой формат, который будет возвращен вашим запросом AJAX.

+0

все еще не выводит im испуганный, отгоняет ответ, пока не дойдет до этой строки: $ st-> execute (array ('forename' => $ fname, 'surname' => $ sname)); – Jub

+0

Эхо, какой ответ? –

+0

Ive только что ушел, набрав «echo $ sname», пока он больше не выйдет за эхо, и эта линия остановилась. – Jub

0

Похоже, что отсутствует значок $ перед fname и sname, поэтому он должен быть $ fname и $ sname вместо fname и sname.

<?php 

    session_start(); 
    $student = isset($_POST['action']);  
    $studentnospace = explode(" ", $student); 
    $fname = $studentnospace[0];// Add dollar sign before each variable 
    $sname = $studentnospace[1]; // Add dollar sign before each variable 
    $pdo=new PDO('mysql:host=localhost; dbname=thename', 'root', 'root'); 
      $st = $pdo->query('SELECT COUNT(*) AS count FROM students WHERE student_forename=:forename, student_surname=:surname'); 
      $st->execute(array('forename' => $fname, 'surname' => $sname)); 
      $result=$st->fetch(); 
      if($result['count'] == 1){ 
       echo $result; 
      } 

?> 
+0

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

+0

Ошибка Ya с моей стороны, но до сих пор не решает проблему. Я боюсь – Jub

+0

Можете ли вы настроить консоль журнала clickeditem и добавить ошибку: на ajax, поскольку параметр ошибки просто консоль регистрирует параметр ошибки. error: function (err) { console.log (err); // предупреждение (ответ); } –