Вернуть результат после вызова ajax
Я пытался написать небольшую функцию, используя ajax, но я действительно борюсь с тем, как вернуть результат. Я видел здесь несколько примеров, но мне не удалось применить их к моему коду...
//function to detect bespoke page
function PageR(iURL) {
var theLink;
$.ajax({
url: './BSK_'+iURL+'.php', //look to see if bespoke page exists
success: function(data){
theLink = ('./BSK_'+iURL+'.php'); //if it does display that page
},
error: function(data){
theLink = ('./'+iURL+'.php'); //if it doesn't display the standard page
},
}); //end $.ajax
return theLink;
};
Я хочу иметь возможность вернуться theLink
сохранить его как переменную, чтобы сделать что-то вроде ниже...
function Nav() {
var theLink = PageR(nav_newCust);
$.mobile.changePage(theLink);
};
Пожалуйста помоги!!
3 ответа
Решение
Почему бы вам не попробовать что-то вроде этого:
//function to detect bespoke page
function PageR(iURL, callback) {
var theLink;
$.ajax({
url: './BSK_'+iURL+'.php', //look to see if bespoke page exists
success: function(data){
theLink = ('./BSK_'+iURL+'.php'); //if it does display that page
},
error: function(data){
theLink = ('./'+iURL+'.php'); //if it doesn't display the standard page
},
complete: function(){
callback(theLink);
}
}); //end $.ajax
};
function Nav() {
PageR(nav_newCust, $.mobile.changePage);
};
Вы не можете сделать это таким образом, потому что у вас есть вызовы ajax, которые не являются блокирующими, и функция PageR всегда возвращает undefined.
Попробуй это:
function PageR(iURL) {
$.ajax({
url: './BSK_'+iURL+'.php',
success: function(data) {
$.mobile.changePage ('./BSK_'+iURL+'.php');
},
error: function(data){
$.mobile.changePage ('./'+iURL+'.php');
},
});
};
Вы должны использовать функцию обратного вызова успеха, чтобы использовать данные ответа. В вашем коде ответ представлен data
параметр в функции обратного вызова. Пример:
...
success: function(data){
theLink = data;
//do something with theLink
},
...