繁体   English   中英

返回php的json时的jQuery / Ajax错误

[英]Jquery/Ajax error when returning json of php

在我的PHP中,我从表中收集数据,并以JSON格式回显数据。

PHP:

<?php
 include "bddata.php";
 header('Content-type: application/json; charset=utf-8'); 

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql="SELECT * FROM categoria ORDER BY idcategoria ASC ";
$result=$conn->query($sql);

while($row=$result->fetch_assoc()){
    $json[]=$row;
}

$data["data"]=$json;
//test variables to get in ajax
$data["idcategoria"] = $data["data"][0]["idcategoria"];
$data["nome_categoria"] = $data["data"][0]["nome_categoria"];
//echo $data["nome_categoria"];

//var_dump($data["data"][1]);

print json_encode($data);

$conn->close();
?> 

这段代码返回如下内容:

idcategoria "21"

nome_categoria "Hotel"

1
idcategoria "22"

nome_categoria "Mecanica"

//my test variables

idcategoria "21"

nome_categoria "Hotel"

JS:

function inicializarForm(data) {
  var id;
  var nome;
  id = val(data["idcategoria"]);
  nome = val(data["nome_categoria"]);
  //$("#id").val(data["idcategoria"]);
  //$("#nome").val(data["nome_categoria"]);
}


$.ajax({
  url: "../php/busca.categoria2.php",
  type: "ajax",
  dataType: "json"

}).done(function(data) {
  window.alert("entrei na funcao");
  console.log(data)
  inicializarForm(data)
  console.log(nome);
  return;

}).fail(function(jqXHR, textStatus) {
  console.error(textStatus);
  window.alert("Erro, tente novamente!");
  console.log(textStatus);

}).always(function() {

});

在我的浏览器控制台中,出现错误。

有人可以告诉我可能会发生什么吗?

最初的用途:在控制台中记录idcategory值和category_name

真正的目的:获取PHP JSON并设置一个交互式菜单,其中包含在数据库中注册的类别。

这是我的代码版本。

的PHP

<?php
include "bddata.php";
header('Content-type: application/json; charset=utf-8'); 

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql="SELECT * FROM categoria ORDER BY idcategoria ASC ";
$result=$conn->query($sql);

while($row=$result->fetch_assoc()){
    $json[]=$row;
}

/*
$json = array(
    0 => array(
        'idcategoria' => 1,
        'nome_categoria' => 'Category 1'
    ),
    1 => array(
        'idcategoria' => 2,
        'nome_categoria' => 'Category 2'
    ),
);
*/

$data["data"]=$json;

print json_encode($data);

$conn->close();

HTML和JS

<html>
<head>
    <title>Show data</title>
    <script
          src="https://code.jquery.com/jquery-3.3.1.min.js"
          integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
          crossorigin="anonymous"></script>
</head>
<body>
<ul id="menu">
</ul>
<script>
function inicializarForm(data) {
    $.map(data, function(i) {
        $("#menu").append("<li><a href='#categoria_"+ i.idcategoria +"'>"+ i.nome_categoria +"</a></li>");
    });
}

$.ajax({
    url: "categoria2.php",
    type: "get",
    dataType: "json"
}).done(function(data) {
    window.alert("entrei na funcao");
    console.log(data['data']);
    inicializarForm(data['data']);
}).fail(function(jqXHR, textStatus) {
    console.error(textStatus);
    window.alert("Erro, tente novamente!");
    console.log(textStatus);
}).always(function() {

});
</script>
</body>
</html>

您可以使用$.map()$.each() jQuery函数来循环从JSON返回的已转换为javascript数组的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM