2012-03-21 110 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.它不是一个直接的答案,但希望你会找到你自己的答案。