Tengo un pequeño problema con la función jquery $ .ajax().jquery - valor devuelto usando el resultado ajax en caso de éxito
Tengo un formulario donde cada clic en el botón de opción o selección en el menú desplegable crea una variable de sesión con el valor seleccionado.
Ahora - Tengo uno de los menús desplegables que tienen 4 opciones - el primero (con la etiqueta Ninguno) tiene un valor = "" otros tienen sus identificadores.
Lo que quiero que suceda es una opción Ninguno (con valor en blanco) para eliminar la sesión y otra para crear una, pero solo si la sesión con este nombre de selección específico no existe ya que todas las demás opciones tienen el mismo cantidad asignada, solo indica cuál fue seleccionada.
no estoy seguro si eso tiene sentido - pero tienen un vistazo al código - tal vez esto hará que sea más claro:
$("#add_ons select").change(function() {
// get current price of the addons
var order_price_addon = $(".order_price_addon").text();
// get price of the clicked radio button from the rel attribute
var add = $(this).children('option').attr('label');
var name = $(this).attr('name');
var val = $(this).val();
if(val == "") {
var price = parseInt(order_price_addon) - parseInt(add);
removeSession(name);
} else {
if(isSession(name) == 0) {
var price = parseInt(order_price_addon) + parseInt(add);
}
setSession(name, val);
}
$(".order_price_addon").html(price);
setSession('order_price_addon', price);
updateTotal();
});
así - en primer lugar cuando el menú de selección de #add_ons desencadena "cambio "obtenemos algunos valores de algunos elementos para los cálculos.
obtenemos el atributo de etiqueta de la opción de nuestra selección que almacena el valor que se agregará al total, nombre del seleccionado para crear una sesión con este nombre y valor para verificar posteriormente cuál fue seleccionado.
ahora - comprobamos si el valor == "" (que indicaría que la opción Ninguno ha sido seleccionada) y deducimos el monto del total, así como también eliminamos la sesión con el nombre del selecto.
Después de esto es donde comienza el problema - declaración de más.
O sí - queremos comprobar si la función isSession() con el nombre de nuestro selector devuelve 0 o 1 - si devuelve 0, agregamos al total el valor almacenado en el atributo de etiqueta, pero si devuelve 1 - eso sugeriría que la sesión ya existe - entonces solo cambiamos el valor de esta sesión recreándola - pero la cantidad no se agrega.
funciónAhora isSession se ve así:
function isSession(selector) {
$.ajax({
type: "POST",
url: '/order.html',
data: ({ issession : 1, selector: selector }),
dataType: "html",
success: function(data) {
return data;
},
error: function() {
alert('Error occured');
}
});
}
ahora - el problema es - que no sé si el uso de "retorno" devolverá el resultado de la función - ya que no parece trabajo, sin embargo, si pongo los "datos" en la sección de éxito en la alerta, parece devolver el valor correcto.
¿Alguien sabe cómo devolver el valor de la función y luego compararlo en la siguiente declaración?
Gracias chicos - Lo he intentado de la siguiente manera:
function isSession(selector) {
$.ajax({
type: "POST",
url: '/order.html',
data: ({ issession : 1, selector: selector }),
dataType: "html",
success: function(data) {
updateResult(data);
},
error: function() {
alert('Error occured');
}
});
}
entonces la función updateResult():
función updateResult (datos) { resultado = datos; }
resultado - es la variable global - el cual estoy a continuación, tratar de leer:
$("#add_ons select").change(function() {
// get current price of the addons
var order_price_addon = $(".order_price_addon").text();
// get price of the clicked radio button from the rel attribute
var add = $(this).children('option').attr('label');
var name = $(this).attr('name');
var val = $(this).val();
if(val == "") {
var price = parseInt(order_price_addon) - parseInt(add);
removeSession(name);
} else {
isSession(name);
if(result == 0) {
var price = parseInt(order_price_addon) + parseInt(add);
}
setSession(name, val);
}
$(".order_price_addon").html(price);
setSession('order_price_addon', price);
updateTotal();
});
pero por alguna razón - no funciona - alguna idea?
posible duplicado de [Cómo devolver la respuesta de un AJAX llamar?] (http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – Bergi
'Tengo un pequeño problema con jquery ....' Este es el problema pequeño más largo Alguna vez he visto ...;) – prageeth