【发布时间】:2017-01-11 20:48:05
【问题描述】:
我在尝试绕过从我的 ajax 请求返回的“解析器错误”时遇到问题,尽管 devtools 中的响应是字符串数组。我有一个单击事件,它发出 ajax 请求以从数据库中提取信息。开发工具中的结果是:
1["1","admin","admin@admin.com","test","2017-01-11 00:00:00"]
我期待它是一个 json 对象 { }。
我为点击事件写的代码是:
$('#viewProfile').on('click', function() {
$.ajax({
type: 'GET',
url: 'api.php',
data: "",
cache: false,
dataType: 'json',
success: function(data) {
var id = data[0];
var name = data[1];
$('#userDetails').html("<p>ID: " + id + " Name: " + name + "</p>");
},
error: function(request, error) {
$('#userDetails').html("<p>There was a problem: " + error + "</p>");
}
});
});
我为api.php写的php
session_start();
echo $_SESSION['user_session'];
//DECLARE VARS FOR DB
$db_host = "localhost";
$db_name = "dbregistration";
$db_user = "root";
$db_pass = "";
$db_tablename = "tbl_users";
//CONNECT TO DB
include 'dbconfig.php';
$db_con = mysqli_connect($db_host,$db_user,$db_pass,$db_name);
$dbs = mysqli_select_db($db_con, $db_name);
//QUERY DB FOR DATA
$result = mysqli_query($db_con, "SELECT * FROM $db_tablename where user_id = '".$_SESSION['user_session']."' ");
$array = mysqli_fetch_row($result);
//RETURN RESULT
echo json_encode($array);
我尝试在 api.php 中使用 json_encode($array, JSON_FORCE_OBJECT) 并将数据类型更改为 HTML,这显然不起作用。简而言之,我的目标是能够触发 click 事件,发送一个 ajax 请求以根据用户 ID 从数据库中检索信息,然后将其返回到页面上的 #userDetails id。我被困在试图绕过对我来说似乎是障碍的字符串数组。
【问题讨论】:
-
你需要删除这行
echo $_SESSION['user_session']; -
这不是一个字符串数组,它是一个json字符串,前面有字符串
1,因此它是一个无效的json字符串。 -
旁注:
$dbs = mysqli_select_db($db_con, $db_name);你不需要那个。您已经在mysqli_connect($db_host,$db_user,$db_pass,$db_name)中声明了所有 4 个参数。 -
将
mysqli_error($db_con)也添加到查询中,这会给您带来什么?以及查看您的控制台和错误报告。