【发布时间】:2016-05-08 12:56:38
【问题描述】:
HTML、AJAX 和 PHP 包括在下面。在介绍 AJAX 之前,一切功能(表单标签和 PHP 处理值从下面的 HTML 中删除)。
下拉列表(类别)由 MySQL 查询填充。当用户选择一个选项时,我想通过 ajax 将 ID 传递给 PHP 脚本 (index.php) 以运行 MySQL 查询以填充另一个下拉列表(子类别)。
Chrome 控制台日志表明 ajax 正确传递了 ID。
Firebug 还显示它通过并且 URL 是正确的(index.php?business_category_id=ajax-passed 值)。如果正在传递 GET 变量,并且我的 PHP 脚本正在寻找它,为什么脚本没有响应?为什么它没有收到价值?我无法回应它,所以我知道它没有被接收到。
ajax脚本在js/script.js,index.php(我的控制器)在根目录,带有html的页面(buy-a-biz.php)在根目录并包含在php中脚本(见下文)。
如果有人能提供帮助,我将不胜感激。我是使用 jQuery ajax 的新手。
HTML。
<select name="category" id="business-category">
<option value="all_categories">Select category</option>
<?php foreach ($categories as $category): ?>
<option value="<?php htmlout($category['id']); ?>"><?php htmlout($category['name']); ?></option>
<?php endforeach; ?>
</select>
AJAX。我也尝试使用 $.get 和 $.post。
$(document).ready(function(){
$("#business-category").change(function(){
var category_id = $(this).val();
console.log(category_id);
$.ajax({
type: 'GET',
url: 'index.php',
data: { business_category_id: category_id },
success: function(category_id){
$("#result").html(category_id + ' submitted successfully!');
}
});
});
});
PHP。
if(isset($_GET['business_category_id'])){
$category_id = htmlspecialchars($_GET['business_category_id']);
include 'includes/dbconnect.php';
try {
$sql = "SELECT * FROM sub_category
WHERE category_id = :category_id";
$s = $db->prepare($sql);
$s->bindValue(":category_id", $category_id);
$s->execute();
while($row = $s->fetch(PDO::FETCH_ASSOC)){
$sub_categories[] = array(
'id' => $row['id'],
'category_id' => $row['category_id'],
'name' => $row['name']
);
}
$sql2 = "SELECT * FROM category";
$s2 = $db->prepare($sql2);
$s2->execute();
while($row = $s2->fetch(PDO::FETCH_ASSOC)){
$categories[] = array(
'id' => $row['id'],
'name' => $row['name'],
);
}
}
catch (PDOException $e) {
$errMsg = "Error fetching data" . $e->getMessage();
include 'error.html.php';
exit();
}
include 'buy-a-biz.php';
exit();
}
【问题讨论】:
-
@IvanBarayev 谢谢,但我无法从这篇文章中开发解决方案。