Создание HTML, который использует jquery для получения данных из веб-API. В начале моего скрипта я сделал функцию, которая проверяет значение выпадающего списка (что выбрано) и в соответствии с выбранным заполняет глобальную переменную.

var $seldom;
$(document).ready(function () {
    function chkdom() {
        if ($("#dropdomain").val('Europa')) {
            $seldom = '192.168.5.37';
        }
        else if ($("#dropdomain").val("Canada")) {
            $seldom = '172.168.0.1';
        }
    } 

После определения функции я немедленно вызвал ее, чтобы проверить и заполнить переменную.

Наконец, нажав на поиск, он должен проверить, что выбрано из выпадающего списка, и в соответствии с этим снова заполнить переменную и запустить функцию GET с измененным URL.

$('#search').click(function () {
            chkdom();
            $.ajax({
                url: "http://" + $seldom + "/api/find/" + $("input#user").val(),

Проблема . После запуска отладки $selcom всегда получает значение '192.168.5.37', не имеет значения, что я делаю. Пытался отладить его многими способами, но не смог найти, почему он присваивает это значение. Пожалуйста, помогите, как это должно быть так просто, но я должен что-то пропустил.

Вот часть кода с самого начала:

var $seldom;
$(document).ready(function () {
    function chkdom() {
        if ($("#dropdomain").val('Europa')) {
            $seldom = '192.168.5.37';
        }
        else if ($("#dropdomain").val("Canada")) {
            $seldom = '172.16.0.1';
        }
    }
    chkdom();
    alert($seldom);
    alert($("#dropdomain").val());

    $('#search').click(function () {
            chkdom();
            $.ajax({
                url: "http://" + $seldom + "/api/find/" + $("input#user").val(),
                type: "GET",
                dataType: 'Jsonp',
                success: function (result) {....}
0
Daniel A 5 Мар 2018 в 04:06

3 ответа

Лучший ответ

Проблема: . После запуска отладки $selcom всегда получает значение '192.168.5.37', не имеет значения, что я делаю.

Не рекомендуется:

    if ($("#dropdomain").val('Europa')) {
        $seldom = '192.168.5.37';
    }
    else if ($("#dropdomain").val("Canada")) {
        $seldom = '172.168.0.1';
    }

Делать:

    if ($("#dropdomain").val() === 'Europa') {
        $seldom = '192.168.5.37';
    }
    else if ($("#dropdomain").val() === "Canada") {
        $seldom = '172.168.0.1';
    }

См. Документацию по jQuery.val():

.val(value)

Описание: Set значение каждого элемента в наборе совпадающих элементы .

value аргумент
Тип : строка, число или массив
Текстовая строка, число или массив строк, соответствующих значению каждого соответствующего элемента для установить как выбранное / проверенное.

Итак, вызов $("#dropdomain").val('some value') записывает значение в элемент $("#dropdomain"). Чтобы прочитать его значение, позвоните $("#dropdomain").val().

0
acdcjunior 5 Мар 2018 в 01:09

Попробуйте код ниже:

var $seldom;
$(document).ready(function () {
    function chkdom() {
        if ($("#dropdomain").val() === 'Europa') {
            $seldom = '192.168.5.37';
        }
        else if ($("#dropdomain").val() === 'Canada') {
            $seldom = '172.16.0.1';
        }
    }
    chkdom();
    alert($seldom);
    alert($("#dropdomain").val());

    $('#search').click(function () {
            chkdom();
            $.ajax({
                url: "http://" + $seldom + "/api/find/" + $("input#user").val(),
                type: "GET",
                dataType: 'Jsonp',
                success: function (result) {....}
0
Huynh Cong Tien 5 Мар 2018 в 01:13

Это условие $("#dropdomain").val('Europa') всегда записывается и оценивается как true.

Итак, вам нужно сравнить значения:

var drop = $("#dropdomain").val(); 
if (drop === 'Europa') {
    $seldom = '192.168.5.37';
} else if (drop === "Canada") {
    $seldom = '172.16.0.1';
}
0
Ele 5 Мар 2018 в 01:20