我设置了一个名为触发器的新表。我正在做的是建立一个简单的二进制系统来触发显示或不显示的内容。下面的代码来 self 刚刚尝试执行此操作的代码。
我在使用下面的代码时遇到了两个问题。
echo json_encode
实际上是回显到文件页面上。我以前从未发生过这种情况,所以我不确定为什么会这样。
回显的结果是这样的:
{"specialPopStatus":{"setting":"1","0":"1"}}
唯一应该显示的数字是1
。我不明白尾随的 0 和 1 来自哪里。
- JSON.parse 的 console.log 结果是 [object Object]。我不明白为什么(至少)1、0 和 1 没有输出。
最终,我想要的只是数据库中我用名称指示的单个记录的设置
结果。然后我想通过我的 ajax 函数获取这条记录。它总是 0 或 1。
我做错了什么?
PHP
try {
$con = getConfig('pdo');
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$special_pop_sql = "
SELECT setting
FROM triggers
WHERE trigger_name = 'Special Pop'
LIMIT 1
";
if ($special_pop_stmt = $con->prepare($special_pop_sql)) {
$special_pop_stmt->execute();
$special_pop_row = $special_pop_stmt->fetch();
}
}
catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
echo json_encode(['specialPopStatus' => $special_pop_row]);
JS
var status2 = 0;
function ajaxSpecialPopTrigger() {
$.ajax({
url: '/php/triggers.php',
datatype: 'json',
success: function (data) {
obj = JSON.parse(data);
specialPopStatus = obj.specialPopStatus;
status2 = specialPopStatus;
console.log(status2 + ' This is the status');
}
});
}
ajaxSpecialPopTrigger();
编辑 - 新的 JS:
var status2 = 0;
function ajaxSpecialPopTrigger() {
$.ajax({
url: '/php/triggers.php',
datatype: 'json',
success: function (data) {
//obj = JSON.parse(data);
//Catalog Requests
specialPopStatus = data.specialPopStatus;
status2 = specialPopStatus;
console.log(status2 + ' This is the status');
}
});
}
ajaxSpecialPopTrigger();
最佳答案
json字符串中出现额外数据的原因是你使用了
$special_pop_row = $special_pop_stmt->fetch();
默认返回一个关联数组和一个数值数组,请注意,两种情况下的数据值为1
。
所以通过做这个小模组来解决这个问题
$special_pop_row = $special_pop_stmt->fetch(PDO::FETCH_ASSOC);
也在 javascript 中,因为你已经给出了
datatype: 'json',
作为参数,你不必解析 json,因为 jQuery 会为你做这件事
所以要编写javascript代码
var status2 = 0;
function ajaxSpecialPopTrigger() {
$.ajax({
url: '/php/triggers.php',
datatype: 'json',
success: function (data) {
//obj = JSON.parse(data);
specialPopStatus = data.specialPopStatus;
//status2 = specialPopStatus;
console.log(specialPopStatus + ' This is the status');
}
});
}
ajaxSpecialPopTrigger();
关于javascript - 获取单个记录输出的内容多于记录内容,并且 json.parse 未记录正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59054993/