javascript - 使用 AJAX 从函数调用中填充 Select2

标签 javascript jquery mysql ajax

我想用 AJAX 响应函数填充 select2 下拉列表,其中的数据将在下拉列表所需的值发生更改时调用。我记录了控制台以确保达到该功能,但尽管如此,机器并未运行指令:

create.tpl - 保存前端代码

    $('.select2lead').select2({
        minimumInputLength: 3,
        ajax: {
            type: 'GET',
            url: '/modules/support/ajaxLeadSearch.php',
            dataType: 'json',
            delay: 250,
            data: function (params) {
                return {
                    term: params.term
                };
            },
            processResults: function (data) {
                return {
                    results: data,
                    more: false
                };
            }
        }
    });

    $('.select2lead').on("change", function() {
       var value = $(this).val();
        // console.log(value);
        searchProjectsByLeadID(value);
    });

    function searchProjectsByLeadID(id){
        $('.select2project').select2({
            minimumInputLength: 3,
            ajax: {
                type: 'GET',
                url: '/modules/support/ajaxProjectSearch.php',
                dataType: 'json',
                delay: 250,
                data: {
                    "id": id
                },
                processResults: function (data) {
                    return {
                        results: data,
                        more: false
                    };
                }
            }
        });
        console.log(id);
    }

ajaxProjectSearch.php

<?php
require_once('../../config.php');

$login = new Login();
if (!$login->checkLogin()) {
    echo lang($_SESSION['language'], "INSUFFICIENT_RIGHTS");
    exit();
}

$db = new Database();

// Select the projects
$query = "
                    SELECT
                        ProjectID AS project_id,
                        ProjectSummaryShort AS project_summary,
                    FROM
                        `rapports_projectTBL`
                    INNER JOIN LeadTBL ON rapports_projectTBL.LeadID=LeadTBL.LeadID
                    WHERE
                        ProjectID > 0
                    AND
                        rapports_projectTBL.LeadID LIKE :leadId
                    ORDER BY
                        ProjectID
                    ASC
                ";

$binds = array(':leadId' => $_GET['id']);
$result = $db->select($query, $binds);
$json = [];

foreach ($result as $row){
    $json[] = ['id'=>$row['project_id'], 'text'=>$row['project_summary']];
}

echo json_encode($json);

控制台中的网络输出

enter image description here https://i.imgur.com/6ZmGGxa.png *正如我们所看到的,searchProjectsByLeadID(id) 函数被调用,但我们没有得到任何返回。没有错误,也没有任何值。唯一被传输的是第一个选择框,它根据在搜索框中输入的内容获取潜在客户数据。 *

最佳答案

已解决

通过让 SQL 查询查找 LIKE 而不是 DIRECT MATCH 来调用问题:

错误
在哪里 项目ID > 0 和 rapports_projectTBL.LeadID LIKE :leadId

正确
在哪里 rapports_ProjectTBL.LeadID=:leadId

关于javascript - 使用 AJAX 从函数调用中填充 Select2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49257210/

相关文章:

javascript - jQuery:获取前一个元素减1

php - float 无法连接

javascript - IE11 在所有其他浏览器工作的地方抛出 "SCRIPT1014: invalid character"

javascript - 启用禁用选择/下拉单选

php - 如何将颜色选择器的值保存到mysql中

php - 对我的号码下订单 natsort();效果不好

MySQL "INSERT INTO position"失败

javascript - JS : get runtime 'this' from outside function

javascript - 如何获取 Azure Web 应用服务以启用 javascript 文件更改

javascript - 如果其他 div 不可见,则淡入 div