【发布时间】:2019-10-06 01:41:35
【问题描述】:
我正在尝试在 php 代码上输出 json_encode。然后我突然在谷歌浏览器的网络标签上发现了这个错误。这是我第一次处理 ajax 和 json 中的错误。
Uncaught SyntaxError: Unexpected token _ in JSON at position 1
at JSON.parse (<anonymous>)
at String.<anonymous> (script.js:61)
at Function.each (jquery.min.js:2)
at Object.<anonymous> (script.js:60)
at u (jquery.min.js:2)
at Object.fireWith [as resolveWith] (jquery.min.js:2)
at k (jquery.min.js:2)
at XMLHttpRequest.<anonymous> (jquery.min.js:2)
(anonymous) @ script.js:61
each @ jquery.min.js:2
(anonymous) @ script.js:60
u @ jquery.min.js:2
fireWith @ jquery.min.js:2
k @ jquery.min.js:2
(anonymous) @ jquery.min.js:2
load (async)
send @ jquery.min.js:2
ajax @ jquery.min.js:2
(anonymous) @ script.js:52
dispatch @ jquery.min.js:2
y.handle @ jquery.min.js:2
单击 script.js:61 将我指向代码部分(由我在 jquery 代码中的注释指向)
$("[id^='deleteNotes']").click(function() {
var id = $(this).closest('div').attr('id');
console.log(id);
$.ajax({
url: "ajax/deleteidentifier.php",
type: "post",
data: {
id_delete: id
}
})
.done(function(result_query_sql_deletedStatus_notes){
$.each(JSON.parse(result_query_sql_deletedStatus_notes), function(key, value) {
if (JSON.parse(value).deleted_status == "n") { //the cursor points me here. precisely, at the end of JSON and start of .parse
alert("Moved to deleted folder.");
window.location.reload();
}
else {
alert("Note permanently deleted!");
window.location.reload();
}
});
});
});
我想使用 json_encode 值上的 deleted_status 值作为 json 警报的触发器。这是 json 编码。
{
"note_record":"1_5cdb7ad317291.jpeg",
"note_type":"images",
"note_title":"",
"user_id":"9",
"date_created":"Wednesday, May 15, 2019. | 10:34:59 AM",
"date_updated":"",
"note_id":"1",
"archived_status":"n",
"deleted_status":"y",
"date_deleted":"Sunday, May 19, 2019. | 07:59:32 PM",
"image_directory":"image_uploads\/1_5cdb7ad317291.jpeg"
}
老实说,我无法在此处指出错误,因为根据我的知识水平,没有可以理解的错误消息可供查看。
编辑:这是在 ajax 中调用的 deleteidentifier.php
<?php
include_once("../db.php");
include "../session.php";
if (isset($_POST["id_delete"])) {
$sql_deletedStatus_notes = "SELECT * FROM notes WHERE note_id = '". $_POST['id_delete'] ."'";
$query_sql_deletedStatus_notes = $conn->query($sql_deletedStatus_notes);
$result_query_sql_deletedStatus_notes = $query_sql_deletedStatus_notes->fetch_assoc();
if ($result_query_sql_deletedStatus_notes["deleted_status"] == "y") {
if ($result_query_sql_deletedStatus_notes["note_type"] == "notes") {
$sql_delete_notes = "DELETE FROM notes WHERE note_id = '" . $_POST['id_delete'] . "'";
$query_sql_delete_notes = $conn->query($sql_delete_notes);
}
else {
$sql_delete_images = "DELETE FROM notes WHERE image_directory LIKE 'image_uploads/" . $_POST['id_delete'] . "' !_% ESCAPE '!'";
$query_sql_delete_images = $conn->query($sql_delete_images);
}
}
else {
$sql_update_deletedStatus_notes = "UPDATE notes SET deleted_status='y', date_deleted = '" . $date_time_curr . "' WHERE note_id = '". $_POST['id_delete'] ."' OR image_directory LIKE 'image_uploads/" . $_POST['id_delete'] . "!_%' ESCAPE '!'";
$query_sql_update_deletedStatus_notes = $conn->query($sql_update_deletedStatus_notes);
}
}
$conn->close();
echo json_encode($result_query_sql_deletedStatus_notes);
?>
【问题讨论】:
-
您能否将完整的 JSON / 值添加到您的问题中?根据 PHP 的内容类型,可能会自动解析 JSON。也许您的 PHP 脚本还打印了一个额外的下划线。在不知道 AJAX 调用的完整结果的情况下,这里很难提供帮助。
-
我现在已经包含了 PHP 脚本。上面的 JSON 是 JSON 编码的完整值。
-
这实际上不是我想看到的——当你在执行 Ajax 时再次查看 Chrome 的网络选项卡时,你可以看到服务器响应。也许结果是 a) 没有有效的 JSON 或 b) 被 Javascript 自动解析
-
我应该在网络标签的哪个部分看到您需要查看的响应?
-
当您在 Ajax 请求期间打开网络选项卡时,您将看到带有
deleteidentifier.php的新行。单击它,然后查看响应