0

これで春のエンドポイントに投稿しようとしています-

  _checkForInfiniteScrolling:=>
    query = @options.query
    scrollElement = @searchResultContainerElem[0]
    prog = (scrollElement.scrollTop + scrollElement.offsetHeight)/scrollElement.scrollHeight
    if (prog > 0.8) and !@endData and scrollElement.scrollTop > 0
      console.log("hitting ajax")
      @getMoreResults(query)

  getMoreResults:(query)=>
    longitude = query.get("longitude")
    latitude = query.get("latitude")
    if (longitude!="" && latitude !="")
      @findMoreLocationPlates(query)
    else
      @findMorePartialPlates(query)

  findMorePartialPlates:(query)=>
    console.log("in find more partial plates")
    $.ajax({
      type: 'POST',
      data: query,
      url: "someUrl"
      success: @_appendNewResults
      })

ただし、別のモデルに存在するこの関数を呼び出しています-

  loadSearchHistory:=>
    console.log("load search being called")
    $.ajax({
      type: 'GET',
      url: "anotherUrl",
      success:@_searchHistoryLoaded
      });

  _searchHistoryLoaded:(data)=>
    console.log("wtf?")
    searchHistoryView = new SearchHistory(pastSearches:data)

奇妙なことは、_searchHistoryLoaded が呼び出されてから loadSearchHistory が呼び出されていることです。_searchHistoryLoaded は別の関数から呼び出されることはないため、これは決して起こらないはずです。

参考までに、これはエラー時のスタックです -

  PlateSearchQuery._searchHistoryLoaded (-search.js:78)
(anonymous function) (-search-results.js:4)
jQuery.extend.param.add (jquery-1.7.1.js:7601)
buildParams (jquery-1.7.1.js:7658)
jQuery.extend.param (jquery-1.7.1.js:7621)
jQuery.extend.ajax (jquery-1.7.1.js:7467)
handleAjax (jquery.mockjax.js:469)
PlateResultsView.findMorePartialPlates (-search-results.js:227)
(anonymous function) (-search-results.js:4)
PlateResultsView.getMoreResults (-search-results.js:221)
(anonymous function) (-search-results.js:4)
PlateResultsView._checkForInfiniteScrolling (-search-results.js:210)
(anonymous function) (-search-results.js:4)
jQuery.event.dispatch (jquery-1.7.1.js:3256)
$event.dispatch (jquery.event.drag-2.2.js:374)
jQuery.event.add.elemData.handle.eventHandle (jquery-1.7.1.js:2875)

確かに、これを解決するのはおそらく誰にとっても難しいでしょう。デバッグ方法についてのアドバイスもいただければ幸いです。

編集-

トレースを間違えました - console.log("wtf?) にいるときにそこにあるコールスタックを表示しました

4

1 に答える 1

0

答えはかなり単純です。ajax 呼び出しを行う場合、データはバックボーン オブジェクトではなく JSON オブジェクトである必要があります。

于 2012-09-07T06:35:47.353 に答える