【问题标题】:JSON.parse: unexpected character at line 1 column 1 of the JSON data (php)JSON.parse:JSON 数据 (php) 的第 1 行第 1 列的意外字符
【发布时间】:2017-02-20 10:03:41
【问题描述】:

我无法访问 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: 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());
    });
}

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));

?>

【问题讨论】:

  • 你得到了什么结果?
  • 您是否尝试过打开网络浏览器选项卡并查看来自search.php 的结果?看起来它不是有效的 JSON,至少因为您在第 6 行有 echo $sql;
  • 另一个重要问题:您的代码容易受到 SQL 注入的攻击。不要使用字符串连接来构建 SQL 查询。
  • @YeldarKurmangaliyev - 那么如何创建查询??

标签: javascript php json


【解决方案1】:

您的问题的解决方案是 JSON.stringify

您需要将数据输出转换为字符串,即

 var yourDataStr = JSON.stringify(yourdata) 

然后使用

验证您的数据
JSON.parse(yourDataStr)

然后你可以得到你的结果。要验证,您可以在以下函数中传递您的数据:-

function validateJSON(str) {
    try {
       JSON.parse(str);
    } catch (e) {
     return false;
    }
  return true;
}

【讨论】:

  • 你能告诉我我应该在哪里写这个。当我在 .done() 中编写它时,它会给出错误,因为缺少 ) 参数列表
猜你喜欢
  • 2016-01-30
  • 1970-01-01
  • 2021-09-14
  • 2020-01-11
  • 1970-01-01
  • 2020-04-17
  • 2021-10-12
  • 2020-09-15
  • 1970-01-01
相关资源
最近更新 更多