Tengo un script jQuery, en el que necesito cargar datos de un CSV desde una URL externa.
Al mismo tiempo, necesito combinar los datos del CSV con los datos proporcionados por un usuario de interfaz a través de un campo de entrada. Mi resultado esperado sería que podría llamar al código jQuery para obtener el valor de la entrada del usuario en el campo de entrada. Sin embargo, aunque esto funciona cuando el código se coloca fuera de la llamada ajax, no funciona dentro.
Al mismo tiempo, no puedo colocar el código para obtener la entrada del usuario fuera de la llamada ajax, ya que necesito poder utilizar la información del CSV cargado junto con la entrada del usuario para realizar un cálculo dinámico.
Mi código es el siguiente:
HTML:
<input type="text" id="my_input" value="12" maxlength="2">JavaScript:
$.ajax({ url: csv_url, async: false, success: function (csvd) { var csv = $.csv.toObjects(csvd); // XYZ done with the CSV data to populate various fields $("#my_input").keyup(function () { console.log(this.value); // this does not result in anything being logged }); }, dataType: "text", complete: function () {} });Por supuesto que no funcionará. Le está diciendo al compilador que agregue el detector de eventos keyup para ingresar después de que la llamada ajax sea exitosa. Lo que significa que no funcionará hasta que la llamada ajax se complete con éxito.
Debe colocar el detector de eventos keyup fuera y dentro de la llamada ajax, solo obtenga el valor como se muestra a continuación:
let myInputValue = ""; $("#my_input").keyup(function () { console.log(this.value); myInputValue = this.value; }); $.ajax({ url: csv_url, async: false, success: function (csvd) { var csv = $.csv.toObjects(csvd); // XYZ done with the CSV data to populate various fields //And later use the myInputValue here }, dataType: "text", complete: function () {} });No nos has dado suficiente información. si solo necesita el valor actual en la llamada ajax, puede hacer lo siguiente:
$.ajax({ url: csv_url, async: false, success: function (csvd) { var csv = $.csv.toObjects(csvd); // XYZ done with the CSV data to populate various fields let myInputValue = $("#my_input").val();//And later use the myInputValue here }, dataType: "text", complete: function () {} });