zdeformowany JSON

0

Witam,

mam drobny problem ze zwracaniem przez php (a przynajmniej tak przeczuwam) zniekształconego JSONa. Generalnie do informacja zwrotna wygląda następująco:

-{"colA":"a","colB":"b","colC":"c","colD":null,"arr":[]}

Więc z php'a dostaję zwrot w postaci enterów oraz myślnika... Problem jest taki, że ja nie siedzę w technologiach webowych i taki zdeformowany JSON mocno mnie denerwuje bo nie wiem w którym miejscu powstaje. Wiem jak to mogę naprawić ale chciałbym poznać jakąś poradę aby wiedzieć co zrobić aby nie dopuścić do takich sytuacji. A teraz po kolei. mam taki kod ajax'owy:

function EditNews(oID)
{
	if (oID !== null) {
		$.ajax({
			url: 'php/Test.php',
			cache: false,
			type: 'POST',
			data: {'someID': oID},
			dataType: 'json',
			success: function (response) {
				console.log(response);
			}
		});
	}
}

Następnie mam php'owy plik, w którym odwołuję się do klasy zwracającej obiekt. I ten obiekt jest zwracany:

$test = new DBTest();
$conn = new DBConn();

$test = $conn->GetDataFromDB(intval($_POST['oID']));
echo json_encode($test);

echo zrwaca obiekt $test ale to co dostaję jako response już jest zdeformowane. W którym miejscu może powstać taki koszmar?

1
json_encode()

przyjmuje dane wyłącznie w UTF8, więc pewnie w tym tkwi problem. Przekonwertuj tego stringa (lub jeśli to tablica, wszystkie stringi) do UTF8 i będzie ok.

1

Raczej wątpię w słuszność metody @kult, json encode przy nie-utf zapewne naśmieci i zepsuje kodowanie, ale nie sądzę, żeby miał wypluć nieprawidłowego jsona.
sprawdzisz to łatwo:
w Test.php zrób sobie na początku ob_start();, a tuż przed json_encode($test) wstaw ob_clean()

jak pomoże to szukaj które pliki dodają Ci te znaki

0

Udało sie. Dzięki ob_start() i ob_clean() json serializuje sie prawidłowo. Nie znalazłem jednak kawałka kodu, który generuje takie śmieci ale to juz moge na spokojnie przeszukać i wgrać z aktualizacja. Raz jeszcze dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1