2015-02-14 3 views
0

Создания успешного вызова JQuery AJAX, но не понимает, почему возвращаемые данные не получают присваивается объект theProductData в следующей функции: - выходназначения успеха JQuery AJAX объект

function getProductDetails(getSku) { 
//Get Full Product Details 
var theProductData = new Object(); 
theProductData.description = ''; 
theProductData.price = ''; 
theProductData.stockLevel = ''; 
$.ajax({ 
    url: baseUrl + '/product/' + getSku, 
    success: function (response) { 
     theProductData.description = response.Description, 
     theProductData.price = response.FormattedSellPrice, 
     theProductData.stockLevel = response.FormattedStockLevel; 
    } 
}); 

console.log(theProductData); 
return theProductData; 
} 

Консоли:

Object {description: "", price: "", stockLevel: ""} 

Данные, безусловно, возвращаются, поскольку я вижу это в devtools.

ответ

0

Ajax-вызов по определению асинхронный (см. Акроним). Как следствие, поток программы продолжается после вызова. В то время ответа еще нет.

Когда ответ наконец доступен, вызывается обратный вызов: ваш код успеха. Только там вы можете распечатать его и перейти к тому, что зависит от него.

Вот порядок там происходит:

  1. Декларация ваших объектов
  2. Ajax вызов просил
  3. Ваша печать неправильно до времени ...
  4. Позже ответ сервера пришел и ваш успех обратный вызов выполнен
+0

Использование jsfiddle.net: https://jsfiddle.net/craig100/dqfvuc3L/ Это w у меня теперь есть, а FormattedSellPrice все равно 0. На шаг ближе? – Craig

+0

Вы были помощником для шагов ... Но проблема в том, что: не зависит от возвращаемого значения вашей вновь созданной функции (это неправильно в Ajax, и в любом случае вы ничего не возвращали). Вместо этого следует зависеть от обратного вызова успеха. Делайте свое задание только там. –

+0

console.log (цена) не должно быть там ... Но две строки выше .. –

Смежные вопросы