JQuery Ajax - 代码被“<”切断

JQuery Ajax - Code Getting Cut Off by '<'

提问人:bbrone 提问时间:9/10/2023 最后编辑:Pippobbrone 更新时间:9/11/2023 访问量:58

问:

刚开始编码,在使用 Ajax 时遇到麻烦。我正在尝试根据我的HTML表单中的参数从MySQL返回一个结果表(这只是一个仅供学习的示例,最终目的会有所不同)。如果单独执行,PHP/MySQL可以工作,但Ajax返回的是PHP代码,而不是结果。它似乎在MySQL代码中的“<”处被切断,并将PHP作为文本返回而不是执行它。正如我提到的,我是新手,所以请随时指出我可以改进的任何其他方面。谢谢!

HTML/JQuery 代码:

<!DOCTYPE html>
<html>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>

    <body>
        <h1> AJAX TEST </h1>
        <form id="coordinatesearch">
            <label for="maxLatInput"> Search Coordinates: <label><br>
                <input 
                    id="maxLatInput" 
                    type="decimal" 
                    placeholder="Max Latitude">
                    
                <input 
                    id="minLatInput" 
                    type="decimal" 
                    placeholder="Min Latitude">
                    
                <input 
                    id="maxLongInput" 
                    type="decimal" 
                    placeholder="Max Longitude">
                    
                <input 
                    id="minLongInput" 
                    type="decimal" 
                    placeholder="Min Longitude">
                    
                </form>
                
                <button
                    type="button"
                    onClick= filterCoordinates()> 
                    Submit
                </button>

        </form>

    </body>

    <script>
        function filterCoordinates() {
            
            var minLatitude = document.getElementById("minLatInput").innerHTML;
            var maxLatitude = document.getElementById("maxLatInput").innerHTML;
            var minLongitude = document.getElementById("minLongInput").innerHTML;
            var maxLongitude = document.getElementById("maxLongInput").innerHTML;
            
            $.ajax({
                type: "GET",
                url: "php_mysql_table_result.php",
                async: false,
                data: {"minLatitude": minLatitude,
                    "maxLatitude": maxLatitude,
                    "minLongitude": minLongitude,
                    "maxLongitude": maxLongitude
                },
                success: function(data) {                    
                    document.getElementById("ajaxresults").innerHTML = data;
                },
                error: "ERROR"
            })

            }
        
    </script>

<p>
    Results: <br></p>
    <div id="ajaxresults">Results Here</div>


</html>

PHP代码:

<?php

// Include Config File
require_once "config.php";
  
// SQL query 
$sql = "SELECT registration_number, entity_name, latitude, longitude, structure_type, height_of_structure, status_code
    FROM database
    WHERE latitude >= :minlatitude AND  
    latitude <= :maxlatitude AND
    longitude >= :minlongitude AND
    longitude <= :maxlongitude;";

  
$sth = $conn->prepare($sql);
$sth->bindValue(':minlatitude', $minlatitude, PDO::PARAM_STR);
$sth->bindValue(':maxlatitude', $maxlatitude, PDO::PARAM_STR);
$sth->bindValue(':minlongitude', $minlongitude, PDO::PARAM_STR);
$sth->bindValue(':maxlongitude', $maxlongitude, PDO::PARAM_STR);

# Try query or error
$sth->execute();
if (!$sth) {
    echo 'An SQL error occured.\n';
    exit;
}

$data = $sth->fetchAll(PDO::FETCH_ASSOC);

echo "<table>
    <th>Registration Number</th>
    <th>Entity Name</th>
    <th>Latitude</th>
    <th>Longitude</th>
    <th>Structure Type</th>
    <th>Structure Height (ft)</th>
    <th>Status Code</th>";

foreach($data as $row) { 
    echo "<tr>
        <td>" . $row['registration_number'] . "</td>
        <td>" . $row['entity_name'] . "</td>
        <td>" . $row['latitude'] . "</td>
        <td>" . $row['longitude'] . "</td>
        <td>" . $row['structure_type'] . "</td>
        <td>" . $row['height_of_structure'] . "</td>
        <td>" . $row['status_code'] . "</td>
        </tr>";
}

echo "</table>";

?>

阿贾克斯的当前结果:

= :minlatitude AND 纬度 <= :maxlatitude AND 经度 >= :minlongitude AND 经度 <= :maxlongitude;“;$sth = $conn->准备($sql);$sth->bindValue(':minlatitude', $minlatitude, PDO::P ARAM_STR);$sth->bindValue(':maxlatitude', $maxlatitude, PDO::P ARAM_STR);$sth->bindValue(':minlongitude', $minlongitude, PDO::P ARAM_STR);$sth->bindValue(':maxlongitude', $maxlongitude, PDO::P ARAM_STR);# 尝试查询或出错 $sth->execute();if (!$sth) { echo '发生 SQL 错误。\n'; exit; } $data = $sth->fetchAll(PDO::FETCH_ASSOC);回声“”;foreach($data as $row) { echo “”;回声” 注册号 实体名称 纬度 经度 结构类型 结构高度(英尺) 状态代码 " .$row['registration_number'] ." " .$row['entity_name'] ." " .$row['纬度'] ." " .$row['经度'] ." " .$row['structure_type'] ." " .$row['height_of_structure'] ." " .$row['status_code'] ." "; ?>

php jquery mysql

评论

4赞 ADyson 9/10/2023
这表明您没有从能够执行 php 的 Web 服务器提供页面。您是否安装了Apache或IIS之类的东西可以做到这一点?
0赞 bbrone 9/10/2023
在学习期间,我现在使用 VS Code 中的 PHP 服务器扩展和我的本地驱动器。我能够独立运行PHP文件,这是有效的,并且我已经能够处理其他任务,例如使用PHP通过HTML表单将数据上传到MySQL。我知道这不是一个永久的解决方案,所以也许我应该切换到合适的网络服务器?谢谢
0赞 Kagome 9/10/2023
首先:当您在浏览器中调用该 php 站点时会发生什么?您在哪里将 $_GET['minlatitude'] 变量转换为 $minlatitude?我建议使用JSON在两个页面之间传输数据。
0赞 bbrone 9/10/2023
例如,我通过将 $minlatitude(和其他参数)设置为静态“30”来测试 PHP,它在我的浏览器中运行良好(调用此静态版本)。当我通过 Ajax 运行相同的静态 PHP 时,我得到的结果是我在帖子中包含的相同错误结果,所以我认为问题超出了数据传输。此外,我以前在我的动态PHP版本中有一个'$minlatitude = $_GET['minLatitude']'(尝试传递数据),也没有修复它。我认为这可能是基于上面第一条评论的服务器问题。感谢您的 JSON 建议,我会对此进行调查。
0赞 Pippo 9/10/2023
config.php 是否以 <?php 标签开头?

答: 暂无答案