1

$.ajax在我的 rails 项目中请求 JSON 响应。

jQuery ->
  testAjax()


testAjax = ->
  $.ajax
    url: "/gmap/test"
    data: "id=2"
    type: "GET"
    dataType: "json"
    complete: (data_response) ->
      result = $.parseJSON(data_response)
      alert(result.name)

我似乎得到了正确的 json 字符串(根据 Firebug 控制台),如下所示:

{"name":"Space Needle","latitude":47.620471,"longitude":-122.349341}

但是,我收到一个错误,抱怨“TypeError:结果为空”

如果我使用

alert(data_response.responseText)

complete函数中,我得到了 json 字符串。所以问题似乎是解析。(???)

4

2 回答 2

1

完成回调的第一个参数是一个jqXHR对象。试试这个:

#Scope the result outside of the testAjax function
result = null

testAjax = ->
  $.ajax
    url: "/gmap/test"
    data: "id=2"
    type: "GET"
    dataType: "json"
    success: (data) ->
      #set the data to your result
      result = data
    complete: ->
      alert result.name

随意编辑我的回复,将我的更改转换为有效的咖啡脚本。

于 2012-11-13T16:02:02.273 回答
1

呸!感谢@KevinB,您的评论successcomplete解决了它。很简单,用前者代替后者:

jQuery ->
  testAjax()
  #initialize()


testAjax = ->
  $.ajax
    url: "/gmap/test"
    data: "id=2"
    type: "GET"
    contentType: "application/json"
    dataType: "json"
    success: (data) ->
      alert(data.name)
于 2012-11-13T16:24:59.333 回答