Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON.parse()不使用变量类型字符串,但如果直接使用,它可以使用其内容_Javascript_Php_Ajax - Fatal编程技术网

Javascript JSON.parse()不使用变量类型字符串,但如果直接使用,它可以使用其内容

Javascript JSON.parse()不使用变量类型字符串,但如果直接使用,它可以使用其内容,javascript,php,ajax,Javascript,Php,Ajax,我使用一个简单的代码从php页面获取一个字符串,我曾多次使用该代码从php文件获取字符串响应。这是我第一次尝试将此结果转换为json对象(或数组) 当我对响应使用JSON.parse时,我得到如下所示的错误。如果我将控制台日志中的文本作为JSON.parse()的参数传递(即,在传递给javascript时从控制台复制),那么它就可以正常工作 xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("

我使用一个简单的代码从php页面获取一个字符串,我曾多次使用该代码从php文件获取字符串响应。这是我第一次尝试将此结果转换为json对象(或数组)

当我对响应使用JSON.parse时,我得到如下所示的错误。如果我将控制台日志中的文本作为JSON.parse()的参数传递(即,在传递给javascript时从控制台复制),那么它就可以正常工作


    xmlhttp=new XMLHttpRequest();
  } else {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (this.readyState==4 && this.status==200) {
        var result = this.responseText;

        resultsObj = JSON.parse(result);
  }

php代码如下所示:

<?php
if (!session_id()) {
    @session_start();
}
header('Content-Type: text/json');
require 'controlleur/connexionDB.php';
$sql = "SELECT * FROM depart";

$result = $conn->query($sql);
$liste .= "[";
$compteur = 0;

while ($row = $result->fetch()) {
    if ($compteur != 0) {
        $liste .= ", ";
    }
    $liste .= "{ \"idDepart\" : \"$row->idDepart\", \"idCircuit\" : \"$row->idCircuit\", \"dateDebut\" : \"$row->dateDebut\", \"nbPlaces\" : \"$row->nbPlaces\", \"prix\" : \"$row->prix\", \"titrePromotion\" : \"$row->titrePromotion\", \"rabais\" : \"$row->rabais\" }";
    $compteur++;
}
$liste .= "]";
$reponse = $liste;

echo $reponse;

确保在php脚本上正确设置了标题

<?php header('Content-Type: text/json');

确保在php脚本上正确设置了标题

<?php header('Content-Type: text/json');

您不应该试图通过操纵字符串来创建json,而应该使用内部的
json\u encode
方法

$result = $conn->query($sql);
$response = [];
while ($row = $result->fetch()) {
    $response[] = [
        'idDepart' => $row->idDepart,
        'idCircuit' => $row->idCircuit,
        'dateDebut' => $row->dateDebut,
        'nbPlaces' => $row->nbPlaces,
        'prix' => $row->prix,
        'titrePromotion' => $row->titrePromotion,
        'rabais' => $row->rabais
    ];
}

echo json_encode($response);
这样,您100%肯定会有:

  • 如果无法对输入进行编码,则出现PHP错误
  • 显示有效的json
---编辑---

我看到您用法语编写代码,请注意特殊字符(如a…)。你应该到处都有UTF-8编码

  • 您的php.ini
  • 你的PDO控制器
  • 您的数据库字符集、表和字段

    $dbHandle=newpdo(“mysql:host=$dbHost;dbname=$dbname;charset=utf-8”,$dbUser,$dbPass); $dbHandle->exec(“设置字符集utf8”)


您不应该试图通过操纵字符串来创建json,而应该使用内部的
json\u encode
方法

$result = $conn->query($sql);
$response = [];
while ($row = $result->fetch()) {
    $response[] = [
        'idDepart' => $row->idDepart,
        'idCircuit' => $row->idCircuit,
        'dateDebut' => $row->dateDebut,
        'nbPlaces' => $row->nbPlaces,
        'prix' => $row->prix,
        'titrePromotion' => $row->titrePromotion,
        'rabais' => $row->rabais
    ];
}

echo json_encode($response);
这样,您100%肯定会有:

  • 如果无法对输入进行编码,则出现PHP错误
  • 显示有效的json
---编辑---

我看到您用法语编写代码,请注意特殊字符(如a…)。你应该到处都有UTF-8编码

  • 您的php.ini
  • 你的PDO控制器
  • 您的数据库字符集、表和字段

    $dbHandle=newpdo(“mysql:host=$dbHost;dbname=$dbname;charset=utf-8”,$dbUser,$dbPass); $dbHandle->exec(“设置字符集utf8”)


您是否可以尝试将php脚本简化为此

<?php
if (!session_id()) {
    @session_start();
}

header('Content-Type: application/json');
require 'controlleur/connexionDB.php';
$sql = "SELECT * FROM depart";

$result = $conn->query($sql);

$liste = array();
while($row = $result->fetch()){
  $list[] = [
    "idDepart" => $row->idDepart,
    "idCircuit" => $row->idCircuit,
    "dateDebut" => $row->dateDebut, 
    "nbPlaces" => $row->nbPlaces, 
    "prix" => $row->prix, 
    "titrePromotion" => $row->titrePromotion, 
    "rabais" => $row->rabais
  ];
}

echo json_encode($liste);

您是否可以尝试将php脚本简化为此

<?php
if (!session_id()) {
    @session_start();
}

header('Content-Type: application/json');
require 'controlleur/connexionDB.php';
$sql = "SELECT * FROM depart";

$result = $conn->query($sql);

$liste = array();
while($row = $result->fetch()){
  $list[] = [
    "idDepart" => $row->idDepart,
    "idCircuit" => $row->idCircuit,
    "dateDebut" => $row->dateDebut, 
    "nbPlaces" => $row->nbPlaces, 
    "prix" => $row->prix, 
    "titrePromotion" => $row->titrePromotion, 
    "rabais" => $row->rabais
  ];
}

echo json_encode($liste);


第1行第1列的字符是什么?就这些了。您可以显示返回json的服务器端代码吗?字符是撇号吗?您可以在php中构建一个包含所有所需项的数组,然后在该数组上使用json_enocde,或者如果将它括在“[”和“]”内,则每次构建一个项目并在该数组上使用json_enocde。第1行第1列的字符是什么?这就是全部内容。您可以显示返回json的服务器端代码吗?字符是撇号吗?您可以用php构建一个包含所有所需项的数组,然后在该数组上使用json_enocde,或者如果将它括在“[”和“]”中,则每次构建一个项并在该数组上使用json_enocde。它是
application/json
,如果代码(包括问题中的代码)不注意标题,则不会产生任何影响。它是
application/json
,如果代码(包括问题中的代码)不注意标题,则不会产生任何影响。运行良好,谢谢你教我怎么做。你应该在每一行后面加上“,”是的,这是真的:)请检查我的编辑,这可能会对你有所帮助。谢谢你,我会把你的答案保存起来,以备将来参考。你应该在每一行后面加上“,”是的,这是真的:)请检查我的编辑,这可能会帮你很多,我会把你的答案保存下来供将来参考是的,基本上就像Yanis git回答的一样是的,基本上就像Yanis git回答的一样