gpt4 book ai didi

php - 使用 jQuery AJAX 将数据传递到 PHP 脚本

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

下面包括 HTML、AJAX 和 PHP。在引入 AJAX 之前,一切正常(表单标签和 PHP 处理值从下面的 HTML 中删除)。

下拉列表(类别)由 MySQL 查询填充。当用户选择一个选项时,我想通过 ajax 将 ID 传递给 PHP 脚本 (index.php),以运行 MySQL 查询来填充另一个下拉列表(子类别)。

Chrome 控制台日志表明 ajax 正在正确传递 ID。

Firebug 还显示它已通过并且 URL 是正确的(index.php?business_category_id=ajax 传递的值)。如果正在传递 GET 变量,并且我的 PHP 脚本正在查找它,为什么脚本没有响应?为什么它没有收到值?我无法回应它,所以我知道它没有被收到。

ajax脚本位于js/script.js中,index.php(我的 Controller )位于根目录中,带有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();

}

最佳答案

您正在将 done 回调传递给 $.ajax。您应该将此回调命名为 success

$.ajax({
type: 'GET',
url: 'index.php',
data: { business_category_id: category_id },
success: function(category_id){
$("#result").html(category_id + ' submitted successfully!');
}
});

或对 $.ajax 返回的 promise 调用 done:

$.ajax({
type: 'GET',
url: 'index.php',
data: { business_category_id: category_id },
}).done(function(category_id) {
$("#result").html(category_id + ' submitted successfully!');
});

关于php - 使用 jQuery AJAX 将数据传递到 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37100078/

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