У меня вопрос re. получение данных от php-функции до ajax.Возврат эха от php-функции до ajax
Ajax (в HTML-файл):
function showUser(name) {
$.ajax({
type: 'POST',
url: '/api.php',
data: {
name : "\""+name+"\"",
func_id : "1"
},
dataType: 'json',
success: function(data)
{
if (data == null) {
console.log("Something went wrong..");
} else {
console.log(data);
Php (отдельный PHP-файл):
<?php
error_reporting(E_ALL);
//MySQL Database connect start
$host = "localhost";
$user = "root";
$pass = "root";
$databaseName = "TFD";
$con = mysqli_connect($host, $user, $pass);
if (mysqli_connect_errno()) {
echo "Failed to connect to database: " . mysqli_connect_error();
}
$dbs = mysqli_select_db($con, $databaseName);
//MySQL Database connect end
$func_id = $_POST['func_id'];
function showUser() {
global $con;
$name = $_POST['name'];
$sql = "SELECT * FROM users WHERE first_name=$name";
$result = mysqli_query($con, $sql);
$array = mysqli_fetch_row($result);
mysqli_close($con);
echo json_encode($array);
}
if ($func_id == "1") {
showUser();
}
?>
Вопрос: Все работает, если у меня нет showUser- функция в php, т. е. я получаю правильный вывод в ajax, если у меня есть весь php-код в «root» напрямую, но когда я помещаю эту часть в функцию, я ничего не получаю в ajax. Сетевая панель в Chrome показывает правильный запрос из sql, поэтому массив $ содержит правильные данные, но я не получаю его в ajax. Есть ли исправление для этого? Спасибо!
вы уязвимы для [sql injection attack] (http://bobby-tables.com). –
Спасибо, что напомнили мне, попытаются исправить! .. но кроме того, почему это работает, чтобы отправить результат обратно в ajax, если не в функции? Есть ли способ заставить его отправить назад (эхо в ajax) из php-функции? –
Проблема исправлена. У меня был комментарий после?>, Который был отправлен обратно в ajax вместе с массивом. Не знаю, почему это не было отправлено обратно, когда он не работает. Но теперь это работает. –