coffeescript $ .post从返回对象获取字符串

时间:2013-12-03 15:14:13

标签: javascript json post coffeescript

我有点问题。当我打电话

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,所以我永远无法真正访问我感兴趣的数据。

任何想法如何访问该数据?

我知道我对发布电话有些误解,但由于我有误解,我不知道自己做错了什么。

我使用post而不是get因为我真的需要将数据发送到后端,所以我可以在DB中进行一些检查

修改 我在哪里制作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

编辑2 这是console.log myVar显示的对象的照片 Image explaining returned object

1 个答案:

答案 0 :(得分:2)

$.post是一个AJAX调用,它不返回服务器的响应,它返回jqXHR承诺:

  

jQuery.post(url [,data] [,success(data,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')