【发布时间】:2017-06-28 00:15:52
【问题描述】:
我对 JSON 没有返回为 JSON 感到有些头疼。我没有错误,只是没有数据。浏览器在响应中显示数据。
我知道它不会以 JSON 形式返回,因为在 AJAX 部分中设置 dataType 会导致它不显示任何内容。如果我删除 dataType 语句,它会显示数据。
我在连接字符串、查询、标头和 AJAX 部分中都尝试过编码,但均无济于事。我的数据库是 UTF-8,general_ci。
AJAX:
$.ajax({
contentType: 'application/json; charset=UTF-8',
data: {'career' : $career},
dataType: 'json',
url: 'functions.php',
success: function(data) {
$("careerdata").html(data);
},
PHP:
if (isset($_GET['career'])) {
require_once 'config.php';
$query = $dbconnect->prepare("select * from jobs where Category = :category");
$query->bindParam(':category', $category);
$category = $_GET['career'];
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($result);
$dbconnect = null;
return;
} else {
echo 'No career data found.';
};
连接文件:
try {
$dbconnect = new PDO("mysql:host=$host;dbname=$database", $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$dbconnect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
};
如果需要更多信息,请告诉我。
工作页面是https://www.shardsmith.com/career.php,实际查询是https://www.shardsmith.com/functions.php(但由于 GET 变量,它不能独立工作)。
【问题讨论】:
-
Soo.... 第一个明显的问题是“您是否检查了 PHP 文件中
$result中的内容”,因为如果它是空的,那么json_encode($result);将同样是空的。当然,在这种情况下,stackoverflow.com/questions/279170/utf-8-all-the-way-through 是您需要阅读的内容。 -
它不是空的,它打印得很好。问题是 AJAX 调用得到的响应。无论如何,我最终自己弄清楚了。
标签: php jquery json ajax utf-8