Ajax jquery valor de retorno asíncrono

¿Cómo puedo crear este código para devolver el valor sin congelar el navegador ?
Puedes reescribir esto con un nuevo método, por supuesto.

function get_char_val(merk) { var returnValue = null; $.ajax({ type: "POST", async: false, url: "char_info2.php", data: { name: merk }, dataType: "html", success: function(data) { returnValue = data; } }); return returnValue; } var px= get_char_val('x'); var py= get_char_val('y'); 

EDITAR: necesito tener al menos 20 variables obtener desde el archivo php en otros momentos.

Esto no es posible.
Javascript se ejecuta en el hilo de la interfaz de usuario; si su código espera que el servidor responda, el navegador debe permanecer congelado.

En su lugar, debe devolver el valor mediante una callback:

 function get_char_val(merk, callback) { var returnValue = null; $.ajax({ type: "POST", url: "char_info2.php", data: { name: merk }, dataType: "html", success: function(data) { callback(data); } }); } get_char_val('x', function(px) { ... }); get_char_val('y', function(py) { ... }); 

Tenga en cuenta que las dos devoluciones de llamada se ejecutarán en un orden impredecible.


Debe modificar su diseño para que pueda obtener los veinte valores en una sola solicitud de AJAX.
Por ejemplo, puede tomar una lista de valores separados por comas y devolver un objeto JSON como { x: "...", y: "..." } .

No puede hacer asignaciones variables de esta manera (asincrónico). debe establecer las variables en el controlador de success .

 variableArray = new Array(); get_char_val('x'); get_char_val('y'); function get_char_val(merk) { var returnValue = null; $.ajax({ type: "POST", url: "char_info2.php", data: { name: merk }, dataType: "html", success: function(data) { variableArray[merk] = data; } }); } 

Una vez que todas las recuperaciones hayan finalizado, puede acceder a las variables x e y utilizando variableArray[x] y variableArray[y]

Puede que esto no sea lo que estás esperando, pero puedes configurarlo como “async”: verdadero si no quieres hacer una pausa en el navegador y, por lo tanto, lo que quieres hacer con px en caso de éxito