2015-06-22 2 views
0

Я следую за учебником this из школ W3. Хотя в основном все работает нормально, похоже, что он не возвращает какую-либо фактическую информацию из базы данных MySQL, которую я сделал, под названием exercises в базе данных exercisedb.Информация не возвращается при извлечении из MySQL с использованием AJAX

Ниже приведен код для index.php

<head> 
    <title> 
     Database Fetch Demo 
    </title> 
<script> 
function showExercise(str) { 
    if (str == "") { 
     document.getElementById("txtPlaceholder").innerHTML = ""; 
     return; 
    } else { 
     if (window.XMLHttpRequest) { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
     } else { 
      // code for IE6, IE5 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
       document.getElementById("txtPlaceholder").innerHTML = xmlhttp.responseText; 
      } 
     } 
     xmlhttp.open("GET","getexercise.php?q="+str,true); 
     xmlhttp.send(); 
    } 
} 
</script> 
</head> 
<body> 

<form> 
    <select name="exercises" onchange="showExercise(this.value)"> 
     <option value="">Choose an Exercise</option> 
     <option value="1">Bench Press</option> 
     <option value="2">Deadlift</option> 
     <option value="3">Barbell Squat</option> 
    </select> 
</form> 
<br> 
<div id="txtPlaceholder"> 
    <b>No exercise selected.</b> 
</div> 
<body> 
</html> 

И ниже код для getexercise.php

<!DOCTYPE html> 
<html> 
<head> 
    <style> 
    table { 
     width: 100%; 
     border-collapse: collapse; 
    } 

    table td, td{ 
     border: 1px solid black; 
     padding: 5px; 
    } 

    th {text-align: left}; 
    </style> 
</head> 
<body> 
<?php 
$q = intval($_GET['q']); 

$connect = mysqli_connect('localhost','root','root','exercisedb'); 
if(!$connect){ 
    die('Could not connect ' . mysqli_error($connect)); 
} 

mysqli_select_db($connect, "exercisedb"); 
$sql = "SELECT * FROM exercises WHERE id = '".q."'"; 
$result = mysqli_query($connect, $sql); 

echo "<table> 
<tr> 
<th>Exercise Name</th> 
<th>Difficulty</th> 
<th>Target Areas</th> 
<th>Description</th> 
</tr>"; 

while($row = mysqli_fetch_array($result)){ 
    echo "<tr>"; 
    echo "<td>" . $row['name'] . "</td>"; 
    echo "<td>" . $row['difficulty'] . "</td>"; 
    echo "<td>" . $row['targetareas'] . "</td>"; 
    echo "<td>" . $row['description'] . "</td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 
mysqli_close($connect); 
?> 
</body> 
</html> 
+0

Существуют ли какие-либо сообщения об ошибках, сгенерированные в вашей JS, в БД или на сервере? Что вы получаете от своего звонка AJAX? –

+0

Какая основная отладка вы сделали? Вы проверили консоль своего браузера? Вы перешли непосредственно к 'getexercise.php? Q = 1', чтобы проверить, работает ли ваш PHP-код? Вы даже знаете, является ли это проблемой javascript или php? – Sean

+3

У вас есть 'q' вместо' $ q' в '$ sql =" SELECT * FROM упражнения WHERE id = '".q."' ";;' – Sean

ответ

0

Вы не должны послать

<!DOCTYPE html> 
<head> 
<body> 

в вашем АЯКС ответ только содержание из ожидаемого.

+1

Это не отвечает на вопрос, но на самом деле это то, о чем должен знать OP. –

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