gpt4 book ai didi

javascript - 使用Php,mySql,ajax,(xmlhttp)和JS,我如何创建一个php多维并将其发送到JS并使用它?

转载 作者:行者123 更新时间:2023-12-03 11:12:32 26 4
gpt4 key购买 nike

我在互联网上查了很多资料,但找不到我需要的答案,所以我来找你。我拥有的:一个如下所示的数据库:

name  latitude  longitude
---- --------- ----------
foo 13.323 -51.356
foo 54.698 2.487

我想要做什么:我需要从使用 php 完成的 mysqli 请求中检索纬度和经度,并在我定义的函数中使用它。

我的问题:我正在尝试使用 xmlrequest 但它显然不起作用。

代码:JS:

var selI = document.getElementById("nameIti");    
selI.onchange = function(){
var val = this[this.selectedIndex].getAttribute("value");
showMark(val);
}
function showMark(str){
var xhr;
if(str==""){
return;
}
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}
else{
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.onreadystatechange=function(){
if(xhr.readyState==4 && xhr.status ==200){
var object = JSON.parse(xhr.responseText);
for(var a in object){
newMark(v['lat'], v['lng']);
document.getElementById("pi").innerHTML=JSON.parse(xrh.responseText); // This is a test to display any kind of result.
}
}
}
xhr.open("GET", "getpos.php?q="+str, true);
xhr.send();
}

PHP:

<?php
$nom = $_GET['q'];

include("connexion.php");
$con = connect_LIF4();
$req1= "SELECT Latitude, Longitude FROM etape LEFT JOIN itineraires ON NomLieu=nomEtape WHERE nomIti LIKE '%$nom%'";
$result1 = mysqli_query($con, $req1);

$data = array();
while($row = mysqli_fetch_array($result1){
$data['lat'] = $row['Latitude'];
$data['lng'] = $row['Longitude'];
$resp[] = $data;
}
echo json_encode($resp);
mysqli_close($con);
?>

我尝试在 onreadystatechange 之外的 showMark 中将 newMark(lat, lng)(我编码且工作正常)与随机值一起使用,并且它可以工作,但我需要将它与从 php 检索到的值一起使用。

最佳答案

PHP 的一个问题是

while($row = mysqli_fetch_array($result1){

缺少第二个大括号。应该是:

while($row = mysqli_fetch_array($result1)){

此外,ajax 请求中的 URL 应该是完整的 URL,而不仅仅是 getpos.php

第三,你已经编写了xrh.responseText(应该是xhr)。

基本上,您的代码中存在大量语法错误 - 您应该使用 javascript 控制台来调试前端代码,并使用 PHP 日志记录或错误显示来调试后端代码。只有在调试完所有明显的语法错误后,您才需要此处的帮助。

编辑 - 下面是一个工作示例(尽管我还没有完成 MySQL 部分)

JS + HTML:

<span id='pi'></span>
<select id='nameIti'>
<option value='foo'>foo</option>
<option value='bar'>bar</option>
</select>

<script>

function newMark(lat,lng) {
console.log(lat);
console.log(lng);
}

var selI = document.getElementById("nameIti");
selI.onchange = function(){
var val = this[this.selectedIndex].getAttribute("value");
showMark(val);
}

function showMark(val){

var str=val;
var xhr;
// if(str==""){
// return;
// }
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}
else{
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.onreadystatechange=function(){
if(xhr.readyState==4 && xhr.status ==200){
var result = JSON.parse(xhr.responseText);
console.log(result);
for(var a in result){
newMark(result[a]['lat'], result[a]['lng']);
document.getElementById("pi").innerHTML = result[a]['lat'] + ', ' + result[a]['lng'];
}
}
}
// xhr.open("GET", "getpos.php?q="+str, true);
xhr.open("GET", "getpos.php?q="+str, true);
xhr.send();
}
</script>

PHP:

<?php
$nom = $_GET['q'];

$data = array();
if($nom == 'foo') {
$data['lat'] = '5.12';
$data['lng'] = '0.34';
$resp[] = $data;
}
else if($nom == 'bar') {
$data['lat'] = '2.34';
$data['lng'] = '1.34';
$resp[] = $data;
}
echo json_encode($resp);
?>

关于javascript - 使用Php,mySql,ajax,(xmlhttp)和JS,我如何创建一个php多维并将其发送到JS并使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27506789/

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