2012-03-21 115 views
1

我想通過POST響應使用jQuery ajax獲取一段數據,但我似乎無法顯示數據。這是我正在使用的代碼。使用ColdFusion和jQuery顯示ajax響應

$(document).ready(function(){ 
    $('#contentdiv').html(' '); 
    $("#idm").change(function(){ 
     var formval = {idm:$(this).val()}; 
     $.ajax({ 
      type: "POST", 
      url: "request_processor.cfm", 
      dataType: "json", 
      data: formval, 
      success: function(response){ 
      $('#contentdiv').fadeIn(2000).append(response.DESCRIPTION);} 
     }); 
    }); 
}); 

這是我從CFC回來的JSON。

{"DESCRIPTION":"Global Alpha I Benchmark"} 

這裏是request_response.cfm

<cfset oData = CreateObject("component","menudata")> 
<cfset oData.setDataSource(dsn)> 
<cfset theData = oData.getMenuData(FORM.idm)> 
<cfset oJSON = createObject("component","cfjson")> 
<cfset theResults = oJSON.encode(theData)> 
<cfoutput>#theResults#</cfoutput> 

有什麼問題的代碼?

感謝

+0

您希望從模板返回什麼樣的數據(僅供參考:它不是CFC,除非您的URL錯誤)。 – 2012-03-21 19:14:14

+1

你是什麼意思「似乎無法顯示數據」?究竟發生了什麼?如果你在成功回調中使用'console.log(response.DESCRIPTION)',你會得到什麼? – 2012-03-21 19:21:48

+0

假設您從CF返回的JSON是正確的,這看起來像一個JS問題。您是否在Firebug控制檯中看到任何錯誤? – 2012-03-21 19:31:31

回答

0

看看你在螢火網絡工具或Chrome開發者工具的Ajax請求得到響應。確保你只獲取了JSON,而沒有其他東西。

如果您在JSON之前或之後收回垃圾郵件,那麼您需要使用cfsetting限制輸出以防止除cfoutput標籤之間的內容之外的輸出。

您應該嘗試實際調用CFC上的方法,而不是調用cfm頁面並在函數和/或ColdFusion中內置的JSON函數上使用returnformat屬性。

您還應該確保#contentdiv元素是有效的HTML。響應回來後,您是否查看了頁面的來源? DOM元素中是否出現任何實際上出現「contentdiv」id的內容?如果是這樣,那麼你有一個CSS/JavaScript問題。

你應該讓它在CSS中可見,並且只執行沒有fade()的追加調用。您需要確保「contentdiv」實際上能夠在您的網頁上顯示。在頁面上顯示說明後,請重新引入淡入淡出()。但是,淡出應該在追加之後而不是之前被鏈接。

說實話,這只是調試101.它不是一個直接的答案,但希望你會找到你自己的答案。