2013-12-03 2 views
0

У меня есть небольшая проблема. Когда я называю

myVar = $.post('/check_2/', JSON.stringify({"newname": window.NEWNAME,}), callback, 'json') 

в «MYVAR» У меня есть объект, поэтому, когда я console.log myVar, я получаю что-то вроде:

Object {readyState: 1, setRequestHeader: function, getAllResponseHeaders: function,getResponseHeader: function, overrideMimeType: function…} 
abort: function (a){a=a||"abort",p&&p.abort(a),w(0,a);return this} 
always: function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this} 
complete: function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this} 
[...] 

Если я console.log myVar.success (к примеру), он печатает что это показано в успехе, но если я сделаю console.log myVar.responseText (где результат вызова), я продолжаю получать undefined, поэтому я никогда не могу получить доступ к интересующим меня данным.

Любые идеи, как я могу получить доступ что данные?

Я знаю, что я что-то не понимаю о почтовых звонках, но поскольку у меня есть недоразумение, я не знаю, что я делаю неправильно.

Я использовал пост вместо получить, потому что мне действительно нужно отправить данные на внутренний интерфейс, так что я могу сделать некоторые проверки в БД

EDIT: Где сделать console.log:

check2: (callback) -> 
    console.log "Starting..." 
    myVar = $.post('/check_2/', JSON.stringify({"newname": window.NEWNAME,}), callback, 'json') 
    console.log myVar 
    console.log "success example" 
    console.log myVar.success 
    console.log "responseText" 
    console.log myVar.responseText 

EDIT 2 Вот фото объекта показал на console.log myVar Image explaining returned object

+0

Где вы звоните 'console.log' (внутри или вне обратного вызова)? –

+1

Вы получаете доступ к данным внутри 'callback'. В его нынешнем виде вы просто устанавливаете 'myVar' на обещание, возвращенное' $ .post'. Если вы покажете нам, что хотите делать с данными, мы, возможно, можем помочь. – Mathletics

+0

'check2: (callback) -> console.log "start ..." myVar = $ .post ('/ check_2 /', JSON.stringify ({"newname": window.NEWNAME,}), обратный вызов, 'json') console.log myVar' – Sascuash

ответ

2

$.post является вызовом AJAX, он не возвращает ответ сервера, он возвращает jqXHR обещания:

jQuery.post (URL [, данные] [, успех (данные, textStatus, jqXHR)] [,] Datatype)
Возвращает: jqXHR

Описание: Загрузка данных с сервера, используя запрос HTTP POST.

Если вы хотите, чтобы данные от вызова AJAX, то вы должны получить его от обратного вызова:

fn = (data, status, jqxhr) -> 
    # Your data is in `data` so do what you 
    # need to do with `data` around here 
    ... 
    # And then call the other `callback` function 
    # by hand. 
    callback(data, status, jqxhr) 

$.post('/check_2/', JSON.stringify({"newname": window.NEWNAME,}), fn, 'json') 
+0

Это сработало !!!! Большое спасибо! – Sascuash

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