Связанные раскрывающиеся списки выбора (CF и Ajax / jQuery) - получение ошибки во втором зависимом раскрывающемся списке при выборе первого параметра раскрывающегося списка - PullRequest
0 голосов
/ 20 сентября 2019

Я получаю сообщение об ошибке во втором раскрывающемся меню при выборе параметра в первом раскрывающемся меню.Я использую Coldfusion / MS SQL для формы и данных.

SQL-запрос корректен, так как cfdump показывает нужные мне значения.Кажется, что работает ajax / jquery, поскольку он по-прежнему извлекает правильные значения из моего метода из моего файла CFC.Хотя после всех значений в конце (в зависимом раскрывающемся списке) есть ошибка, которая гласит:

var req;

function Initialize() {
    try {
        req = new ActiveXObject("Msxml2.XMLHTTP")
    }
    catch(e) {
        try {
            req = new ActiveXObject("Microsoft.XMLHTTP")
        }
        catch(oc) {
            req = null
        }
    }
    if (!req && typeof XMLHttpRequest != "undefined")   {
        req = new XMLHttpRequest()
    }
}

function getEncryption(urlString) {
    Initialize();
    var url = '/genEncryption.cfm?' + urlString;
    if (req != null) {
        req.onreadystatechange = processEncryption;
        req.open("GET", url, false);
        req.send(null);
    }
}

function processEncryption() {
    if (req.readyState == 4) {
        if (req.status == 200) {
            newLocation = req.responseText;
            window.location = newLocation;
        } else {
            alert('An unspecified error occurred. Please call the admin for assistance');
        }
    }
}

. Она собирает правильные данные для заполнения второго раскрывающегося списка.Я очень смущен, и я впервые работаю с зависимыми выпадающими меню, используя Coldfusion / CFC / MSSQL, мне нужна помощь!

Это мой код Ajax / Jquery:

<script type="text/javascript">
    $(document).ready(function() {
        $("#type").change(function() {   // when the Type dropdown changes 
            $("#model").empty();          // empty the Model dropdown 
            $.ajax({
                type: "GET",
                url: "../CFCs/Test.cfc",
                data: {
                    Type: $("#type").val(),
                    Method: "getModels"
                    },
                dataType: 'text',
                success: function(data) {
                    var options = data.split(",");              // convert returned list to array 
                    var select = document.getElementById('model');
                    for(var i=0;i<options.length; i++)
                    {
                        var options2 = $.trim(options[i]);      // clean up label portion 
                        $("#model").append($("<option></option>").val(options[i]).text(options2));   // append options to model dropdown 
                    }
                }
            });
        });
    });
</script>

И это то, что у меня есть в моем CFC-файле для метода, используемого для заполнения второго раскрывающегося списка:

<cffunction name="getModels" access="remote" returntype="any" returnformat="plain" >
    <cfargument name="type" type="string" required="no" /> 
    <cfquery name="getModels" datasource="MyDataSource" >
        SELECT DISTINCT model
        FROM table
        WHERE type = 'test model'
        ORDER BY model
    </cfquery>
    <cfset myList = ValueList(getModels.model)>   <!--- convert query results to list --->
    <cfreturn MyList />
</cffunction>

И вот что я выбрал для выпадающего списка:

<select id="type" name="type">
  <cfoutput query="SelectType">
    <option value="#type#">#type#</option>  
  </cfoutput>
</select>
<select id="model">
   <option value="">select model</option>
</select>

Я несколько дней чесал голову, пытаясь сделать это разными способами.Cfselects не работает вообще, особенно с приложением, которое я использую.Мне нужно какое-то направление или помощь - если кто-то может направить меня в нужное место с помощью выпадающего списка / выбора с Coldfusion / CFC и JavaScript / jQuery / Ajax, я был бы очень благодарен!

Также обратите внимание: SQL-запрос вместе с другим кодом, который у меня есть, маскируется в фиктивном тексте / коде из соображений безопасности!

...