gpt4 book ai didi

javascript - 使用 JSON 和 AJAX 从数据库中提取信息

转载 作者:可可西里 更新时间:2023-11-01 08:59:03 25 4
gpt4 key购买 nike

我正在尝试使用 Javascript、AJAX、php 和 JSON 制作一个简单的“搜索”框。对于这个项目,我只使用从 mqsql 网站下载的数据库“world”。尝试从我的数据库中提取信息时遇到问题。它只需要第一行信息然后我得到这个错误:“SCRIPT5007:SCRIPT5007:无法获取未定义或空引用的属性‘Continent’ajaj.js (65,3)”

在此先感谢您能给我的任何帮助!

这是我的 ajaj.js 代码:

var ajaxRequest=new XMLHttpRequest();
var input;
var button;

function init(){
input = document.getElementById('search');
input.addEventListener("keyup", sendRequest, false);
button = document.getElementById('sendButton');
button.addEventListener("click", sendSecondRequest, false);
}


function sendRequest(){
ajaxRequest.onreadystatechange = getRequest;

var searchTxt = "country=" + input.value;

ajaxRequest.open("GET", "getCountries.php?" + searchTxt, true);
ajaxRequest.send();
}


function getRequest(){
if (ajaxRequest.readyState==4 && ajaxRequest.status==200){
var jsonObj = JSON.parse(ajaxRequest.responseText);

var dataList = document.getElementById('countries');

dataList.innerHTML="";

for(var i = 0; i<jsonObj.length; i++){

var option = document.createElement('option');

option.value = jsonObj[i]['Name'];

dataList.appendChild(option);
}
}
}

function sendSecondRequest(){
ajaxRequest.onreadystatechange = getSecondRequest;

var infoCountry = "country=" + input.value;

ajaxRequest.open("GET", "getCountries2.php?" + infoCountry, true);
ajaxRequest.send();
}

function getSecondRequest(){
if (ajaxRequest.readyState==4 && ajaxRequest.status==200){
alert(ajaxRequest.responseText);
var jsonObj2 = JSON.parse(ajaxRequest.responseText);




document.getElementById("result").innerHTML = "LANDSKOD: " + jsonObj2[0]["Code"] + "<br>";
document.getElementById("result2").innerHTML = "LANDSKOD: " + jsonObj2[2]["Continent"] + "<br>";
document.getElementById("result3").innerHTML = "LANDSKOD: " + jsonObj2[7]["Population"] + "<br>";

}
}

window.addEventListener("load",init,false);

问题就出在这里,我只是不知道如何让它工作:

document.getElementById("result").innerHTML = "LANDSKOD: " + jsonObj2[0]["Code"] + "<br>";
document.getElementById("result2").innerHTML = "LANDSKOD: " + jsonObj2[2]["Continent"] + "<br>";
document.getElementById("result3").innerHTML = "LANDSKOD: " + jsonObj2[7]["Population"] + "<br>";

我尝试了几种不同的解决方案,但无法正常工作,我尝试使用以下代码将代码合并为一行:

document.getElementById("result").innerHTML = "LANDSKOD: " + jsonObj2[0]["Code"] + "<br>" + "Continent: " + jsonObj2[2]["Continent] + "<br>"; 

但这似乎也不适合我。

我的其余代码:

index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AJAX</title>
<script type="text/javascript" src="ajaj.js"></script>
</head>
<body>
<h1>Sök information om ett land</h1>

<input type="text" list="countries" id = 'search' placeholder="Land">
<datalist id="countries">
</datalist>
<button type="button" id="sendButton">Hämta information</button>

<p id="result"></p>
<p id="result2"></p>
<p id="result3"></p>

</body>
</html>

getCountries.php

<?php
include_once('db.inc.php');

$country = $_GET['country'];

// Kör frågan mot databasen world och tabellen country
$stmt = $db->prepare("SELECT * FROM country WHERE Name Like ? ORDER BY Name");
$stmt->execute(array("$country%"));

$tableRows = array();

// Lägger resultatet i vår array
$tableRows = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Här konverteras och skickas resultatet i JSON-format
echo json_encode($tableRows);
?>

getCountries2.php

<?php
include_once('db.inc.php');

$country = $_GET['country'];

// Kör frågan mot databasen world och tabellen country
$stmt = $db->prepare("SELECT * FROM country WHERE Name Like ? ORDER BY Name");
$stmt->execute(array("$country"));

$tableRows = array();

// Lägger resultatet i vår array
$tableRows = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Här konverteras och skickas resultatet i JSON-format
echo json_encode($tableRows);
?>

数据库.php

<?php

define ('DB_USER', 'root');
define ('DB_PASSWORD', 'Abc12345');
define ('DB_HOST', 'localhost');
define ('DB_NAME', 'world');

$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8';
$db = new PDO($dsn, DB_USER, DB_PASSWORD);
?>

编辑:我刚刚从评论中得到答案,信息在同一行,没有不同,因此它不适用于

jsonObj2[2]["Continent"]

但它确实适用于

jsonObj2[0]["Continent"]

谢谢@sean!

最佳答案

这意味着 jsonObj2[2] 不是对象。数据库返回数组中似乎没有 3 行 (jsonObj2[2])。尝试

jsonObj2[0]["Code"] + jsonObj2[0]["Continent"] + sonObj2[0] 
["Population"]

它应该可以工作,但不知道为什么要定位到第 0、2、7 行。

关于javascript - 使用 JSON 和 AJAX 从数据库中提取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50583943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com