Вернуть результат после вызова 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
},
...
Другие вопросы по тегам