• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak przesłać JSON z klasy php do AJAX

VPS Starter Arubacloud
0 głosów
483 wizyt
pytanie zadane 12 kwietnia 2017 w PHP przez amiluke Obywatel (1,120 p.)
edycja 12 kwietnia 2017 przez amiluke

Mam problem z przesyłaniem danych JSON z klasy php do AJAXA. Problem w tym, że gdy używam zwykłego pliku php wszystko działa poprawnie:

<?php
header("Content-Type: application/json; charset=UTF-8");
$pdo = new PDO('mysql:host=localhost;dbname=database', 'root', '');
$pdo -> query ('SET NAMES utf8');
$pdo -> query ('SET CHARACTER_SET utf8_unicode_ci');
$stmt = $pdo->prepare("SELECT id, name FROM table");
$stmt->execute();
$stmt = $stmt->fetchAll(PDO::FETCH_CLASS);

echo json_encode($stmt);
?>
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      myObj = JSON.parse(this.responseText);
      console.log(myObj);
      document.getElementById("par").innerHTML = myObj[4].id;
    }
};
xmlhttp.open("GET", "http://localhost/project/app/models/json.php", true);
xmlhttp.send();

ale jeżeli spróbuje pobrać dane z bazy danych w kontrolerze w silexie:

namespace AI\models;
use Silex\Application;
use Silex\Api\ControllerProviderInterface;

class Ajax implements ControllerProviderInterface
{
  public function connect(Application $app){
    $controllers = $app['controllers_factory'];
    $controllers->get('/', 'AI\models\Ajax::home');
    return $controllers;
  }

  public function home(Application $app){
    header("Content-Type: application/json; charset=UTF-8");
    $result  = $app['db']->prepare("SELECT id, name FROM table");
    $result->execute();
    $result = $result->fetchAll(\PDO::FETCH_CLASS, \AI\models\Ajax::class);
    echo json_encode($result);

    return $app['twig']->render('ajax.twig');
  }

}
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      myObj = JSON.parse(this.responseText);
      console.log(myObj);
      document.getElementById("par").innerHTML = myObj[4].id;
    }
};
xmlhttp.open("GET", "http://localhost/project/app/models/Ajax.php", true);
xmlhttp.send();

Błąd w konsoli: Uncaught SyntaxError: Unexpected token < in JSON at position 0
    at JSON.parse (<anonymous>)
    at XMLHttpRequest.xmlhttp.onreadystatechange (main.js:5)

Znając życie rozwiązanie jest proste ale już za długo mnie zatrzymuje ten problem dlatego proszę o pomoc jak ktoś wie jak sobie z tym poradzić.

1 odpowiedź

–1 głos
odpowiedź 12 kwietnia 2017 przez mtk3d Nałogowiec (46,690 p.)
komentarz 12 kwietnia 2017 przez amiluke Obywatel (1,120 p.)
nic mi to nie dało

Podobne pytania

0 głosów
1 odpowiedź 215 wizyt
pytanie zadane 10 marca 2016 w JavaScript przez ormu16 Gaduła (4,980 p.)
0 głosów
1 odpowiedź 384 wizyt
pytanie zadane 8 stycznia 2021 w PHP przez wizarddos Nałogowiec (26,590 p.)
0 głosów
1 odpowiedź 434 wizyt
pytanie zadane 16 sierpnia 2022 w PHP przez Doge Gaduła (3,420 p.)

93,025 zapytań

141,990 odpowiedzi

321,293 komentarzy

62,374 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...