Respuesta corta, no puede, la primera A en AJAX significa Asincrónico, lo que significa que la solicitud aún se está ejecutando cuando llega a la declaración de devolución.
Usted puede hacerlo con una petición síncrona (no asíncrono), pero es generalmente una mala cosa Algo
como la siguiente oughta devolver los datos.
function getPrice(productId, storeId) {
var returnHtml = '';
jQuery.ajax({
url: "/includes/unit.jsp?" + params,
async: false,
cache: false,
dataType: "html",
success: function(html){
returnHtml = html;
}
});
return returnHtml;
}
PERO
A menos que realmente realmente necesita para ser capaz de utilizar el valor de retorno de la prueba de inmediato, se le mucho mejor pasar una devolución de llamada en la prueba. Algo así como
function getPrice(productId, storeId, callback) {
jQuery.ajax({
url: "/includes/unit.jsp?" + params,
async: true,
cache: false,
dataType: "html",
success: function(html){
callback(html);
}
});
}
//the you call it like
getPrice(x,y, function(html) {
// do something with the html
}
Editar UH, ustedes son más rápidos que decir lo que dije :-)
Gotchya - pensé que tengo que hacer eso. pero ¿y si tuviera que hacerlo? –
Es difícil responder eso sin saber cómo pretendía utilizar el método getPrice(). ¿Para qué se usa? ¿Cómo se usa? Es un código en ese nivel "externo" que tendrá que ajustarse. – cletus
Ok, lo tengo. No me di cuenta de que productId y storeId estarían en el alcance y puedo pasar esas cosas en la devolución de llamada. –