2012-04-02 40 views
0

我想從我的控制器中呈現一個對象到一個jQuery回調函數。 這就是我試圖做到這一點:Grails/jQuery - 從Controller到jQuery函數呈現JSON對象

調用的jQuery的Ajax功能

function addVideo() { 
    var url = "/myApp/project/addVideo" 
    var data = 'videoURL=' + $('#videoUrlInputText').val() 

    $.getJSON(url, 
      { 
       videoURL: $('#videoUrlInputText').val() 
      }, 
      updateVideoLoad(data) 
    ) 
} 

我的Grails項目「控制器

def addVideo() { 
    def videoMap = [urlAccepted: "bim", provider: "bam"] 
    render videoMap as JSON 
} 

我的jQuery的回調函數(updateVideoLoad( ))

function updateVideoLoad(videoMap) { 
    $('h4').html('Provider: ' + videoMap.provider) 
} 

我最終在瀏覽器中獲得undefined輸出。瀏覽器控制檯沒有任何內容 控制器輸出經過測試並正確呈現JSON對象。

任何想法爲什麼對象沒有被回調函數正確讀取? 任何建議是最受歡迎的。

在此先感謝。

回答

2

我不知道詳情,但我懷疑你的成功回調是有問題的,因爲它不只是一個函數名稱或匿名函數。

如果您嘗試此操作,該怎麼辦?

$.getJSON(url, 
     { 
      videoURL: $('#videoUrlInputText').val() 
     }, 
     function (response, status, jqxhr) { 
      updateVideoLoad(data) 
     } 

) 
+0

賓果。將我的函數調用封裝到「function(data){}」中解決了它。我不確定爲什麼該功能沒有正確解決。 你的意思是「它不只是一個函數名稱」? 非常感謝! – 2012-04-02 17:51:11

+0

如果你有一個像這樣定義的函數:'function updateVideoLoad(data,status,jqxhr){...}'你可以在像這樣的ajax調用中引用它:'success:updateVideoLoad'或者$ .getJSON(url ,data,updateVideoLoad);'擁有'fn(data)'使得它立即被觸發,而不是作爲回調(稍微猜測)。 – davethegr8 2012-04-02 17:55:11

+0

感謝您的解釋 – 2012-04-02 19:01:55