Construyendo html que usan jquery para obtener datos de la API web. Al comienzo de mi script, hice una función que verifica el valor del menú desplegable (lo que está seleccionado) y de acuerdo con el seleccionado, llena la variable global.

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';
        }
    } 

Después de definir la función, la llamo inmediatamente para verificarla y completar la variable.

Finalmente, al hacer clic en buscar, debería verificar lo que seleccionó en el menú desplegable y, de acuerdo con eso, volver a llenar la variable e iniciar la función GET con la URL modificada

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

Problema : después de comenzar la depuración, $selcom siempre obtiene el valor de '192.168.5.37' no importa lo que haga. Intenté depurarlo de muchas maneras, pero no pude encontrar por qué está asignando ese valor. Por favor, ayúdenme, ya que debería ser muy simple, pero debo perder algo.

Aquí está la parte del código desde el principio:

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 mar. 2018 a las 04:06

3 respuestas

La mejor respuesta

Problema: después de comenzar la depuración, $selcom siempre obtiene el valor de '192.168.5.37' no importa lo que haga.

No:

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

Hacer:

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

Consulte la documentación de jQuery.val():

.val(value)

Descripción: Establecer el valor de cada elemento en el conjunto de coincidencias elementos.

Argumento value
Tipo : cadena o número o matriz
Una cadena de texto, un número o una matriz de cadenas correspondientes al valor de cada elemento coincidente para establecer como seleccionado / marcado.

Entonces, llamar a $("#dropdomain").val('some value') escribe un valor para el elemento $("#dropdomain"). Para leer su valor, llame a $("#dropdomain").val().

0
acdcjunior 5 mar. 2018 a las 01:09

Prueba el siguiente código:

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 mar. 2018 a las 01:13

Esta condición $("#dropdomain").val('Europa') siempre se escribe y se evalúa como true.

Por lo tanto, debe comparar los valores:

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