【发布时间】:2017-11-06 03:18:44
【问题描述】:
我正在尝试向我的 PHP 文件发出 ajax 请求。
当我的“国家/地区”选择选项菜单更改时,会发生 ajax 请求。结果假设是一个名为“州省”的新选择选项菜单,选项将基于“国家”选择选项菜单中的选择。
这就是我想要的样子:
我遇到的问题是,当 ajax 向 PHP 发出请求时,PHP 似乎返回了一个空数组:
有谁知道可能出了什么问题?
谢谢!
选择选项的 HTML:
<select name="Country" class="form-control input-sm" id="Country">
</select>
带有 onchange 函数的 Ajax 代码:
$("#Country").on("change",function(){
var val = $('#Country').val();
performAJAX(val,'Country','StateProvince');
});
function performAJAX(choice,prevSelect,newSelect){
$.ajax({
type: "post",
url: "select-creation.php",
data: {choice: choice, prevSelect: prevSelect,newSelect: newSelect},
dataType: "json",
success: function(data){
var obj = $.parseJSON(data);
console.log("meow meow");
}
});
}
PHP 代码:
<?php session_start();
try{
$choice = $_POST['choice'];
$prevAttri = $_POST['prevSelect'];
$nxtAttri = $_POST['newSelect'];
$data = array();
$sql = 'SELECT '.$nxtAttri.' FROM agents WHERE '.$prevAttri.' = :userChoice';
include_once $_SERVER['DOCUMENT_ROOT'].'/inc/Database.class.php';
$db = new Database();
$conn = $db->getConnection();
$query = $conn->prepare($sql);
$query->bindValue(':userChoice',$choice,PDO::PARAM_STR);
if($query->execute()){
$data = $query->fetchAll(PDO::FETCH_ASSOC);
}//stmt
return json_encode($data);
}catch(PDOException $e){
echo $e->getMessage();
}
?>
【问题讨论】:
-
“喵喵”控制台日志旨在作为测试,看看我是否从 php 文件中获得了成功的数据响应
-
我不是PHP开发者,但是php应该使用
echo json_encode($data)而不是返回它? -
你是从那里获取数据,可能没有数据返回
-
@guradio 我刚刚做了一个快速研究(stackoverflow.com/questions/9387765/…),看起来不一样,return 用于函数和 echo 打印它,所以由于它是一个 ajax,它需要身体作为响应的答案,如果他是
returning 某事,它可能不是反映在屏幕截图响应上的 json 类型(它显示一个 php 对象)。另外,也许您应该需要将正确的标头添加到 PHP 文件中 -
你肯定要
echojson,return不一样写。
标签: javascript php jquery html ajax