我正在尝试向我的 PHP 文件发出 ajax 请求。
当我的“国家/地区”选择选项菜单更改时,会发生 ajax 请求。结果应该是一个名为“State Province”的新选择选项菜单,并且选项将基于“Country”选择选项菜单中所做的选择。
这就是我想要的样子:
我遇到的问题是,当 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();
}
?>
最佳答案
您的代码return json_encode($data);
似乎什么都没有或无效,因为您的代码没有使用函数。
只需使用echo json_encode($data);
在ajax端,您不需要使用$.parseJSON(data);
,因为您已经将dataType
指定为json
它会立即将 PHP 响应的数据转换为对象类型。
关于javascript - 向 PHP 发送 Ajax 请求不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47129253/