Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как получить переменную после пост. (https://javascript.ru/forum/jquery/44034-kak-poluchit-peremennuyu-posle-post.html)

Duda.Ml1986@gmail.com 03.01.2014 16:09

Как получить переменную после пост.
 
.post выполняет запрос. Данные и все остальное корректно но почему пост возвращает XmlHTTPRequest а не то что я в нем сделал. Все попытки привести к тому что надо (responseText, переопределение done) ничерта немогу понять.
Как мне получить строку из Reloader.getManufacturersByCompanyId(this.companyI d) такую как в теле .post

A.JS

$('select[name="companyes"]').change(function() {
        
       this.answer = Reloader.getManufacturersByCompanyId(5);
       console.log(this.answer);

CONSOLE: {
Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
}

    });



B.JS
var Reloader = {
    
    getManufacturersByCompanyId: function(companyId) {
        this.action = "getManufacturers";

        manufacturers = $.post( "ajax.php", { a: this.action , id: companyId })
            .done(function( data ) {
                manufacturers = jQuery.parseJSON(data);
                 
                console.log(manufacturers);
CONSOLE
{
<option value=25 selected>"Европа Плюс"</option>
<option value=26 selected>Фаворит</option> 
}
                return manufacturers;
            });

       pret = manufacturers.done(function() { });
CONSOLE pret
{
Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
 
}
        return pret;
    },

danik.js 03.01.2014 17:32

Цитата:

Сообщение от Duda.Ml1986@gmail.com
почему пост возвращает XmlHTTPRequest а не то что я в нем сделал

Потому что асинхронность!
Цитата:

Сообщение от Duda.Ml1986@gmail.com
return manufacturers;

Ну и куда ты возвращаешь manufacturers? В функцию (определенную в недрах jQuery), вызвавшую callback-функцию, переданную агрументом в .done() ? И почему ты думаешь что та функция, написанная разрабами jQuery, ждет твои manufacturers?

Duda.Ml1986@gmail.com 04.01.2014 03:22

как получить извне Reloader то что пришло от пост в виде не обьекта а строки которая указана выше.

danik.js 04.01.2014 04:34

Через callback-функцию.
Передай функцию, которая будет обрабатывать результат, вторым аргументом при вызове getManufacturersByCompanyId.
А в .done() вызывай эту функцию, передавая результат


Часовой пояс GMT +3, время: 09:34.