То, что я пытаюсь сделать, это вызвать некоторые данные базы данных через ajax и php. Но вызов ajax не работает, и я не могу найти решение в Интернете.
Итак, вот мой код:
test.php
<?php include_once 'db_class.php'; $cat = $_GET['cat']; $dbconn = new dbconn('localhost', 'root', 'somepsw', 'blog'); $dbconn->set_query("select * from posts where category = '".$cat."'"); echo '<br/>'.$dbconn->query.'<br/>'; $result = $dbconn->result; $num = $dbconn->num_results; $array = mysqli_fetch_assoc($result); echo json_encode($array); ?>
Если я наберу этот URL-адрес в браузере: http://127.0.0.1:82/blog/ws/test.php?cat=css
Данные, возвращаемые через jsonEncode, верны, но когда я загружаю его на html-странице с помощью jquery, он не может прочитать данные.
test.html
<html> <head> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <script> function ajaxCall() { var css; $.ajax({ url: 'test.php', type: "GET", data: {cat: css}, dataType: 'json', success: function(rows) { alert(rows); }, error: function() { alert("An error occurred."); } }); } ajaxCall(); </script> </head> <body></body> </html>
Заранее спасибо.
Ваша переменная css
не имеет значения. Вы хотели использовать строку 'css'
. Возможно, вы захотите загрузить и другие категории. Поэтому измените функцию ajaxCall
на
function ajaxCall(category) { $.ajax({ url: 'test.php', type: "GET", data: {cat: category}, dataType: 'json', success: function(rows) { alert(rows); }, error: function() { alert("An error occurred."); } }); }
и назовите его, используя
ajaxCall('css');
Я просто переписал php-код с использованием PDO, теперь должен быть более безопасным.
db.php
<?php $dbhost = "localhost"; $dbuser = "root"; $dbpsw = "somepsw"; $dbname= "blog"; try { @$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpsw); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); } catch(PDOException $e) { echo "Connection failed, an error occured! Please contact server administrator."; //user friendly message getErrorsLog($e->getMessage()); } function closeDbConn () { $dbh = null; } function getErrorsLog($message) { $file = 'dberrors.log'; $date = date("d/m : H:i :"); // Open the file to get existing content $current = file_get_contents($file); // Append a new error message to the file $current .= $date.$message; $current .= "\r\n"; // Write the contents back to the file file_put_contents($file, $current); exit(); } ?>
blogdata.php
<?php include_once "db.php"; $tableName = "posts"; $data = array(); @$view = $_GET["view"]; if (isset($_GET["view"])) { $stmt = $dbh->prepare("SELECT * FROM $tableName WHERE category =? ORDER BY created DESC"); } else { try { $stmt = $dbh->prepare("SELECT * FROM $tableName ORDER BY created DESC"); } catch (PDOException $e) { getErrorsLog($e->getMessage()); } } $stmt->bindValue(1, $view, PDO::PARAM_STR); $stmt->execute(); $affected_rows = $stmt->rowCount(); //Rows count if ($affected_rows == 0) { echo "The data you looking for no longer exist, please contact the administrator."; exit(); } foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) { $data[] = $row; } echo json_encode($data); closeDbConn(); ?>