Javascript JSON.parse:JSON数据(php)第1行第1列的意外字符
我无法访问json数据,因为它总是失败并给出错误提示 SyntaxError:JSON.parse:JSON数据的第1行第1列出现意外字符 search.php输出json数据,但scripts.js输出json.parse错误 script.jsJavascript JSON.parse:JSON数据(php)第1行第1列的意外字符,javascript,php,json,Javascript,Php,Json,我无法访问json数据,因为它总是失败并给出错误提示 SyntaxError:JSON.parse:JSON数据的第1行第1列出现意外字符 search.php输出json数据,但scripts.js输出json.parse错误 script.js // execute when the DOM is fully loaded $(function() { console.log("1"); $("#q").typeahead({ autoselect: tr
// execute when the DOM is fully loaded
$(function() {
console.log("1");
$("#q").typeahead({
autoselect: true,
highlight: true,
minLength: 1
},
{
source: search,
templates: {
empty: "no places found yet",
suggestion: _.template("<p><%- subname %></p>")
}
});
// re-center map after place is selected from drop-down
$("#q").on("typeahead:selected", function(eventObject, suggestion, name) {
});
});
function search(query, cb)
{
// get places matching query (asynchronously)
var parameters = {
sub: query
};
$.getJSON("search.php", parameters)
.done(function(data, textStatus, jqXHR) {
cb(data);
})
.fail(function(jqXHR, textStatus, errorThrown) {
console.log(errorThrown.toString());
});
}
//当DOM完全加载时执行
$(函数(){
控制台日志(“1”);
$(“#q”)。提前键入({
自动选择:正确,
推荐理由:没错,
最小长度:1
},
{
资料来源:搜索,
模板:{
空:“尚未找到任何位置”,
建议:【模板(“”)
}
});
//从下拉列表中选择位置后重新居中地图
$(“#q”)。在(“typeahead:selected”上,函数(eventObject、suggestion、name){
});
});
函数搜索(查询,cb)
{
//获取匹配查询的位置(异步)
变量参数={
子:查询
};
$.getJSON(“search.php”,参数)
.done(函数(数据、文本状态、jqXHR){
cb(数据);
})
.fail(函数(jqXHR、textStatus、errorshown){
log(errorThrown.toString());
});
}
search.php
<?php
require(__DIR__ . "/../includes/config.php");
$subjects = [];
$sub = $_GET["sub"]."%";
$sql = "SELECT * from subjects where subname LIKE '$sub'";
echo $sql;
if($rows = mysqli_query($con,$sql))
{
$row = mysqli_fetch_array($rows);
while($row){
$subjects[] = [
'subcode' =>$row["subcode"],
'subname' => $row["subname"],
'reg' => $row["reg"],
'courseid' =>$row["courseid"],
'branchid' => $row["branchid"],
'yrsem' => $row["yrsem"]
];
$row = mysqli_fetch_array($rows);
}
}
// output places as JSON (pretty-printed for debugging convenience)
header("Content-type: application/json");
print(json_encode($subjects, JSON_PRETTY_PRINT));
?>
您的问题的解决方案是JSON.stringify 您需要将数据输出转换为字符串,即
var yourDataStr = JSON.stringify(yourdata)
然后用
JSON.parse(yourDataStr)
然后你就可以得到你的结果了。要进行验证,您可以在以下函数中传递数据:-
function validateJSON(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
您得到了什么结果?您是否尝试打开网络浏览器选项卡并查看
search.php
中的结果?看起来它不是有效的JSON,至少因为您有echo$sql代码>在第6行。另一个重要问题:您的代码容易受到SQL注入的攻击。不要在构建SQL查询时使用字符串连接。@YeldarKurmangaliyev-那么如何创建查询??您能告诉我应该在哪里写这个吗。当我在.done()中写入它时,它会给出错误(缺少)参数列表