2012-07-02 49 views
0

我試圖使用jQuery AJAX調用,我有我的應用程序的aspx頁面上的一個WebMethod。我正在關注這篇文章:http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/Sitecore的,jQuery的Ajax和的WebMethod返回頁面本身

我注意到,當我嘗試進行ajax調用時,它給我的頁面本身(myPage.aspx)而不是我的WebMethod的結果。在這一點上,我基本上直接從上面的文章中使用代碼。 JavaScript的是:

$(document).ready(function() { 
// Add the page method call as an onclick handler for the div. 
$("#Result").click(function() { 
    $.ajax({ 
     type: "POST", 
     url: "myPage.aspx/GetDate", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      // Replace the div's content with the page method's return. 
      $("#Result").text(msg.d); 
     } 
    }); 
}); 
}); 

用於將WebMethod的myPage.aspx代碼隱藏是:

[WebMethod] 
    public static string GetDate() 
    { 
     return DateTime.Now.ToString(); 
    } 

奇怪的是,我已經它的工作一個單獨的測試頁上,但是當我試圖將它集成到我想要使用它的實際頁面中,但它不會。在搜索網站和網絡時,我找不到解決我的問題的任何內容。

我正在運行Sitecore 6.5和.NET Framework 4.0版。任何人都可以幫助或提供見解?

+0

你爲什麼不包括像這樣的錯誤錯誤功能:功能(XHR,狀態,錯誤){VAR味精= JSON.parse(xhr.responseText); alert(msg.Message);}看看它是否拋出任何錯誤,或者使用螢火蟲來檢查請求和resposne –

+0

@ user1042031我以前看過Response頭文件,它是返回text/html這是HTML頁面本身。我不確定爲什麼會發生這種情況。 – user1496624

回答

0

我只熟悉PHP,但通常你必須返回回到前json_encode()的陣列。因此,例如在PHP

$TestArray['d'] = "All My HTML"; 
echo json_encode($TestArray); 

//Then in Jquery 

$("#Result").html(msg.d); 

,並確保有一個與結果的ID的DIV ...

0

通常情況下,當這種情況發生的要求是要麼不是POST或不具備application/json內容類型集。

我不熟悉Sitecore的,但其他人似乎都與它有與頁面的方法干擾麻煩:How to use jquery ajax and webmethod with sitecore

-1

我認爲問題是,Sitecore的URL重寫處理請求和忽略的/GetDate部分你的網址。

因此您必須ASPX添加到<setting name="IgnoreUrlPrefixes" />設置。

+0

我在Sitecore中添加了一個支持憑單,他們回覆說這是由RewriteModule中的一個問題引起的。他們確實說過它在6.5更新4中不可重現,所以升級Sitecore可能會有所斬獲,但我現在無法做到這一點。我曾嘗試將我的頁面添加到IgnoreUrlPrefixes設置,但這沒有幫助。 感謝您的迴應! – user1496624

+0

這不是一個選項,因爲你會丟失Sitecore上下文 – ydd1987