json_encode
завершается ошибкой, если содержимое переменной не соответствует UTF-8. Если ваша база данных использует другую кодировку, переменные содержат специальные символы, тогда вы должны получить ошибку там. (поднимите уровень error_reporting
или проверьте json_last_error
, чтобы узнать)
Другая проблема с вашим конкретным кодом заключается в том, что вы сначала выводите что-то еще:
echo $username.$password;
Это сделает недействительным вывод JSON в целом. Если у вас есть ведущий мусор, ваш браузер не будет правильно декодировать возвращаемые переменные. Также не забудьте отправить соответствующий заголовок с вашим результатом, используя header("Content-Type: application/json");
$b=json_decode($_POST['userpwd_value']);
$username=$b->{'username'};
$password=$b->{'password'};
$check = mysql_query("select username,password from user where id=1");
$row = mysql_fetch_assoc($check);
$row = array_map("utf8_encode", $row);
if ($row['username']==$username && $row['password']==$password) {
$output[] = $row;
} else {
$output[] = array("value"=>"false");
}
header("Content-Type: application/json");
print(json_encode($output));