无法通过javascript在php服务器上获取数据;

时间:2019-12-25 20:43:50

标签: javascript php fetch

我的本​​地主机上有PHP服务器。 并使用以下脚本文件:

?php
include 'config.php';
$mysqli = new mysqli(GGC_HOST , GGC_USER , GGC_PASSWORD , GGC_DB);
    if (mysqli_connect_errno()){
        die("Connect failed: ". mysqli_connect_error());
    }//if

    $mysqli->set_charset("utf8");
    $queryString="SELECT Id, name, description, price, old FROM fruits;";


    $myArray=array();   

    if ($result = $mysqli->query($queryString)) {

        while($row = $result->fetch_array(MYSQLI_ASSOC)) {
            $myArray[] = $row;
        }//while
   }//if
    echo json_encode($myArray);

$result->close();
$mysqli->close();
?>

当我尝试在浏览器中运行php文件时,它会给我一些结果,如下所示:

  

[{“ Id”:“ 1”,“ name”:“ \ u10d5 \ u10d0 \ u10e8 \ u10da \ u10d8”,“ description”:“ \ u10d1 \ u10e0 \ u10dd \ u10ea \ u10d9 \ u10d8   一世   \ u10ee \ u10d0 \ u10e0 \ u10d8 \ u10e1 \ u10ee \ u10d8 \ u10e1“,”价格“:” 1.25“,”旧“:” 0“},{” Id“:” 2“,”名称“:” \ u10db \ u10e1 \ u10ee \ u10d0 \ u10da \ u10d8“,”说明“:” \ u10d2 \ u10e3 \ u10da \ u10d0 \ u10d1 \ u10d8   \ u10d5 \ u10d0 \ u10dc \ u10d8 \ u10e1“,”价格“:” 3.5“,”旧“:” 0“}]

我的第一个问题是:为什么它在浏览器中显示得如此奇怪,以及如何解决?

当我从JavaScript中获取数据时:

fetch('http://localhost/aaa/fruits.php', {
                method: 'GET', // *GET, POST, PUT, DELETE, etc.
                mode: 'no-cors', // no-cors, cors, *same-origin
                headers: {
                    'Content-Type': 'application/json',
                    "Access-Control-Allow-Origin":"*"
                    // 'Content-Type': 'application/x-www-form-urlencoded',
                  },
                // Useful for including session ID (and, IIRC, authorization headers)
              })
              .then(response => response.json())
              .then(data => {
                console.log(data) // Prints result from `response.json()`
              })
              .catch(error => console.error(error))

控制台向我显示:

  

SyntaxError:输入意外结束       在index.js:156

我无法在3天内解决此问题,因此决定与您分享。 第156行是:

.then(response => response.json())

1 个答案:

答案 0 :(得分:-1)

更好的方法是使用PDO。

    $db = new PDO(
        'dbname=yourDb; mysql:host=localhost;charset=utf8',
        "username",
        "password",
        array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

    $sql = $db->prepare("SELECT Id, name, description, price, old FROM fruits"); 
    $sql->execute();
    $data = $sql->fetchAll(PDO::FETCH_ASSOC);

现在您可以执行以下操作:

$json = json_encode($data);