2011-08-22 70 views
1

我正在爲我的Umbraco網站做AJAX功能。Umbraco - 檢查請求是否爲XmlHttpRequest

基本上我想要做的是當有人請求http://mysite.com/news與XmlHttpRequest標頭,然後我想Umbraco返回下一頁的JSON。

我一直在試圖做的是找到合適的地方來檢查Umbraco中的標題。基本上我想重寫或繼承一些類,我可以檢查標題並根據標題返回Json或HTML中的頁面。

我使用一把umbraco 4.7.0(1.0.4090.21631)

任何反饋會更受歡迎!謝謝!

回答

0

我可能會使用IIS7的URL重寫模塊來檢測請求中的內容類型,然後使用/ jsonTemplate結尾重定向到相同的URL。然後,您將創建一個名爲jsonTemplate的masterpage,其中包含一個宏,它將返回您的JSON。

這對於Umbraco很常見 - 指定一個單獨的模板和一個單獨的宏以返回相同內容的不同視圖。查看http://blog4umbraco.codeplex.com/SourceControl/changeset/view/68424#1138733獲取使用此方法返回RSS的XSLT宏的示例。

+0

謝謝,我一直以我自己的方式相當盲目,基本上是一個HttpModule,它檢查請求標頭並返回JSON中的Umbraco頁面。你怎麼看待這個想法? – raRaRa

+0

我會將您的答覆標記爲答案,因爲它與我的解決方案最接近。通過創建我自己的HttpModule並檢查標題,我確實走了自己的路。工程就像一個魅力:) – raRaRa

+0

這是有點相同的事情。建議檢查altTemplate方法 - 對於RSS,JSON等非常適用。還有/ base允許您編寫.NET類和方法,將它們註冊到/config/restExtensions.config中,然後通過帶有參數的URL調用它們 - 當我不使用altTemplate方法時,我通常使用它自己返回JSON。 –

0

您應該檢查服務器端邏輯的Content-Type標頭。您的Javascript應指定Content-Type,如application/json

+0

是的,我會這樣做,但我不知道在服務器端的位置。基本上我想創建一個覆蓋或繼承一些Umbraco默認行爲的類庫,並執行此服務器端檢查。有任何想法嗎? – raRaRa

+1

您可以在您的asp.net應用程序中使用類似傳統處理程序或WCF服務的東西嗎?我從未使用Umbraco,但出於好奇,你會推薦它嗎?我正在尋找從我被迫使用的可怕的CMS遷移出來,而Umbraco看起來很有希望。 – wsanville

+0

我最終寫了一個HttpModule並訂閱了一個事件,我在這裏做了所有的檢查。 我對Umbraco沒有太多的經驗,但是到目前爲止我所經歷的很好,開放源代碼等。由於我沒有使用任何其他.NET CMS,所以無法真正比​​較它。 – raRaRa