JSON API

0

Cześć,

Prosiłbym o jakieś przekierowanie, wskazówki odnośnie tego jak w php napisać API, które będzie pobierało z bazy dane w formacie JSON. Udało mi się napisać kod, który pobiera te dane z bazy, nie mogę jednak znaleźć rozwiązania aby utworzyć połączenie między webserwerem, na którym siedzi plik php, a aplikacją napisaną w JS.
Już kilka rozwiązań przetestowałem i teraz krążę w kółko, dlatego pytam.
Z góry dzięki.

0

Zakładając, że zwracasz już z pehapa ładny JSON (bo inczej nie pisałbyś w tym dziale), to:
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
lub lepiej:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
lub ostatecznie (może być prostsze na początek):
http://api.jquery.com/jquery.ajax/ (w przypadku samego pobierania może być też https://api.jquery.com/jquery.get/ )

0

Dzięki.

Nadal nie mogę się połączyć. Napisałem z tutoriala taki kod php (dane logowania tutaj wyczyściłem):

<?php


$connection = mysqli_connect("","","","") or die("Error in database  " . mysqli_error($connection));
mysqli_set_charset($connection, "utf8");

if(function_exists($_GET['method'])) {
	$_GET['method']();
}

function getData() {
	$sql = "SELECT pytanie.tresc_pytania, kategoria.nazwa_kategorii, odpowiedzi.tresc_odpowiedzi from pytanie
inner JOIN kategoria on pytanie.id_kategorii=kategoria.id_kategorii
inner join odpowiedzi on pytanie.id_pytania=odpowiedzi.id_pytania;";

	$result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));
	$connection->error;
	$emparray = array();
	while($row =mysqli_fetch_assoc($result))
	{
		$emparray[] = $row;
	}
	$emparray = json_encode($emparray);
	echo $_GET['jsoncallback'] . '(' . $emparray . ')';
}

?>

Mój JS wygląda tak:

window.onload = function() {
	sendRequest();
}

function sendRequest() {
	$.getJSON('http://scripts.j.pl/quiz/api.php?method=getData&jsoncallback=?',
		function(data) {
			console.log(data);
		})
}

Reszta jest w komentarzach, dałem tylko dotąd, dokąd sie uruchamia. Najwyraźniej request łączy się z bazą, bo wyskakuje mi dopiero "Error in selecting", z linijki 18 w php. Jednak uruchamiając inny skrypt php, który tylko wyświetla jsona, nie ma z tym problemu, json się ładnie wyświetla. Problem powstaje w momencie próby łączenia przez getJSON.
Proszę o jakieś wskazówki, podejrzewam że rozwiązanie jest proste dla doświadczonego backendowca.

0

Aha, no i oczywiście console.log z JSa nic nie wyświetla...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.