Это данные, которые я пытаюсь получить
public function dohvatiZadatak($id){
$this->id = $id;
$conn = $this->connect()->prepare("SELECT * FROM zadatci WHERE id=:id");
$conn->bindParam('id', $this->id);
$conn->execute();
$zadatak = $conn->fetch(PDO::FETCH_ASSOC);
return json_encode(array('zadatak' => $zadatak));
}
Запрос Ajax
function urediZadatak(id){
$("#uredi-zadatak-modal").modal('show');
$.ajax({
type: "GET",
url: "../zadatci/uredizadatak.php?id = "+id,
data: id,
async: false,
success: function(response){
console.info(response.zadatak);
}
});
}
Я ничего не получаю взамен. Как мне получить данные, которые я возвращаю с помощью PHP?
Какой является сервер вернул? Пустой ответ? Ошибка? Есть ли ошибка JavaScript в консоли отладки браузера? Что-нибудь в журналах ошибок PHP? Вам нужно сделать небольшую отладку. Боковое примечание: async: false не следует использовать, и браузеры, скорее всего, полностью перестанут его поддерживать.
Вы куда-нибудь звоните echo dohvatiZadatak($id);?
@RoryMcCrossan, спасибо, но когда я удаляю эту строку, ничего не меняется.
@David На вкладке сети я получаю пустой ответ
@PedroHenrique ммм нет
Поэтому, когда функция вызывается, я появляется на вкладке сети, а вкладки предварительного просмотра / ответа пусты.
@ V.Alen: Пустой ответ часто указывает на ошибку в PHP. Включите отчеты об ошибках, проверьте журналы ошибок PHP и т. д. Кроме того, стоит изучить, почему именно вы ожидаете содержимого ответа. Ваш PHP-код показывает функцию, но вызывает ли что-нибудь эту функцию? Как вы подтвердили, что функция вообще вызывается?
@David да, у меня есть файл uredizadatak.php, который вызывает эту функцию dohvatiZadatak с переданным идентификатором
Если переключить 'return' с 'print_r', я получаю правильные данные на вкладке ответа, но их нельзя использовать, если я сделаю это с print_r, верно?
@ V.Alen: Когда вы вызываете эту функцию, что вы делаете с результатом? Вы повторяете это на выходе?
@ Дэвид У меня есть это в файле urediZadatak.php. если (isset ($ _ GET ['id'])) {$ id = $ _GET ['id']; $ zadatak = новый задатак (); $ zadatak-> dohvatiZadatak ($ id); } Так что я пока ничего не догадываюсь.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Чтобы ответ был отправлен обратно из PHP, вам необходимо использовать echo. В вашем коде вы должны добавить следующее в место, вызывающее dohvatiZadatak($id):
echo dohvatiZadatak($id);
И чем в вашем интерфейсе вы можете использовать:
function urediZadatak(id){
$("#uredi-zadatak-modal").modal('show');
$.ajax({
type: "GET",
url: "../zadatci/uredizadatak.php?id = "+id,
data: id,
async: false,
success: function(response){
var parsedResponse = JSON.parse(response);
// use the response as parsedResponse.key
}
});
}
Это работает, спасибо и спасибо за то, что сэкономили мне время на поиски того, как на самом деле получить доступ к этим данным.
Основываясь на ветке комментариев выше ...
Ваша функция возвращает результат:
return json_encode(array('zadatak' => $zadatak));
Но вы не выводите этот результат на вывод:
$zadatak->dohvatiZadatak($id);
Все, что вам нужно сделать, это распечатать его на выходе:
echo $zadatak->dohvatiZadatak($id);
Помимо проблемы, удалите
async: false. Это ужасная практика до такой степени, что браузер выдаст вам предупреждение в консоли, говорящее вам не делать этого. Сам ваш код выглядит нормально. Я бы посоветовал проверить вкладку сети консоли после того, как вы сделаете запрос, чтобы проверить ответ - я бы предположил, что у вас есть проблема на стороне сервера где-то в PHP.