2013-12-17 9 views
-3

Я новичок в JavaScript и не смог пересечь учебник, объясняющий следующую ситуацию.Можете ли вы поместить вывод функции jQuery внутри переменной?

Цель, которую я пытаюсь достичь, заключается в том, что я получу вывод функции jQuery и поместил ее внутри переменной. Более явный, я хочу вывести данные из таблицы MySQL и поместить данные в переменную.

Затем я буду использовать эту переменную, которая будет использоваться внутри другой переменной, которая является вычислением.

Функция (я знаю, следующий код не работает, но я не уверен, что это правильный):

var sliderValue = function() { 
     $.ajax({ 
     url: "select.php", 
     type: "GET", 
     success: function(result) { 
      // alert(result); 
      return result; 
     } 
     }); 
    }); 

Использование переменной (игнорировать TotalCost переменную):

var startValue = ((sliderValue - totalCost)/totalCost) * 100; 

Я знаю, что вычисление переменных выше работает, когда я использую базовую переменную, такую ​​как var totalCost = "52";.

Спасибо за помощь заранее.

+0

Не совсем уверен, что вы просите. если файл PHP 'select.php' выдает номер, ваш расчет должен работать. Предполагая, что вы устанавливаете 'var totalCost' где-то еще ...? – superphonic

+1

@ 웃 웃웃 웃웃 вы не можете –

+0

php выдает число. И totalCost - это просто переменная, содержащая в ней число. Когда я выясню, как это сделать, AJAX правильно звонит, он получит аналогичное обращение. – dvoutt

ответ

2

Здесь не хватает нескольких концепций. Во-первых, эта линия:

var startValue = ((sliderValue - totalCost)/totalCost) * 100; 

не будет работать, потому что sliderValue является функцией, а не результат функции. Вы можете и часто будете передавать функции в качестве параметров, но в этой ситуации это не имеет смысла.

Вы можете вызов функция вместо:

var startValue = ((sliderValue() - totalCost)/totalCost) * 100; 

Или использовать IIFE (немедленно вызываемая функцию выражение):

var sliderValue = (function() { 
    return "53"; 
})(); 

Теперь sliderValue имеет значение 53 вместо ссылки к функции, и это работает:

var startValue = ((sliderValue - totalCost)/totalCost) * 100; 

Однако, ни одно из этих решений не будет работать с вызовом ajax, поскольку у вас там есть. Ajax-вызовы асинхронны и не работают таким образом. См. how to return the response from an ajax call.

0

Вы должны прочитать немного о AJAX. AJAX о создании асинхронный запросов. Это означает, что ваша программа не ждет, пока вызов не будет выполнен, и результат будет получен, он просто сделает вызов и продолжит. Он уведомляет вас о полученном результате, вызвав успех (если запрос успешно, иначе ошибка), вы переходите к функции $ .ajax. Таким образом, правильный способ сделать то, что вам нужно, это передать функцию обратного вызова и называть его успешным. Все это - jQuery. Вы должны научиться с помощью AJAX, прежде чем использовать JQuery для создания AJAX запросов

var sliderValue = function(callback) { 
     $.ajax({ 
      url: "select.php", 
      type: "GET", 
      success: function(result) { 
       // alert(result); 
       callback(result); 
      } 
     }); 
}); 

затем

sliderValue(funciton(result){ 
    //And you have your result here 
    alert(result); 
}) ; 
Смежные вопросы