2011-09-17 48 views
1

我們最近在我們的服務器上建立了一個新網站:Windows 2K8 R2/IIS7/ColdFusion8 Ent。現在在本地沒有問題的關鍵查詢現在在生產中不起作用。<cfcontent type =「text/json」>打開下載對話框,以及其他ajax怪事

在下面的cfc函數中使用<cfcontent type="text/json">會導致瀏覽器在模板調用此函數時打開一個下載對話框。

<cffunction name="getPolls" access="remote" returntype="any" hint="Gets Polls"> 
    <cfargument name="poll_id" type="numeric" required="true">  
    <cfset var qPoll = 0> 
     <cfquery name="qPoll" datasource="#application.datasource#"> 
      select * from polls where poll_id = #arguments.poll_id# 
     </cfquery> 
     <cfcontent type="text/json"> 
     <cfreturn qPoll> 
</cffunction> 

下面是調用上述函數的jQuery代碼。當此代碼在模板(test.cfm)內運行時,會打開下載對話框,要求我保存文件test.cfm而不是實際瀏覽模板。

$(function(){  
    var poll_id = global_poll_id || 0; 
    var uniqueid = new Date().getTime(); 
    $.getJSON("/cfcs/poll.cfc?method=getPolls&returnformat=json&queryformat=column&uniqueid=" + uniqueid, {"poll_id":poll_id}, function(res,code) {  
     alert(res.ROWCOUNT); // error here 
    }) 
}) 

如果我從功能刪除<cfcontent type="text/json">,出現下載對話框不再;但是,Ajax回調似乎不火,並返回一個錯誤:

res is not defined 
+2

你的url/params有點奇怪,但沒有錯。你確定你不加載jquery 2次嗎?您是否嘗試使用.get()而不是.getJSON()?.無論如何,您應該處理.error函數,至少出於調試目的,並且「console.log」您的代碼prm – roselan

回答

0

這與我的application.cfc有關。我需要完全刪除onRequest方法才能正常工作。

3

對JSON正確的MIME類型是application/JSON所以添加文本/ JSON可能會導致下載提示,因爲這可能啞劇ISN」在IIS中映射。

您並不嚴格需要添加cfcontent,操縱標頭可能是更好的方法。無論哪種方式jQuery將解析到json。檢查你的網站督察的迴應和標題,你可能會發現更多關於這個問題。

+0

服務器或IIS設置有問題,我確信它。我一直使用文本/ json。同一個IIS服務器上的另一個網站可以使用相同的代碼。 – user460114

+0

這是不正確的,並導致瀏覽器在我的機器上運行Win7上的IIS7服務頁面下載。應用程序/ JSON或文本/ JavaScript將是正確的[RFC 4627](http://www.ietf.org/rfc/rfc4627.txt) –

+0

我已經嘗試過。發生同樣的錯誤。此外,如果我完全忽略它,它仍然應該提供數據,而不是。 – user460114