2013-08-01 35 views
1

的想法是,這個div包含從由服務器通過獲取隨機函數來獲取客戶,並每隔幾秒鐘一個jQuery報價運行,這消除了這個引用,並帶來了另一個看法。執行代碼背後方法每次DIV負載(ASP,ASCX,ascx.cs)

這是我的.ascx我的股利代碼:

< div class="testimonial" ID="Fader" onload="runTestimonial"> 

<q>"<asp:Literal runat="server" ID="Quote"></asp:Literal>"</q> 

</div> 

代碼隱藏(.ascx.cs):

protected void runTestimonial(object sender, EventArgs e) 
{ --lots 'o code-- 

Partnership partnership = Partnership.GetRandomTestimonial(cmPage.CMPageId); 
      if (partnership != null) 
      { 
       Quote.Text = partnership.Testimonial; 
       Visible = true; 
      } 
} 

我使用這個jQuery代碼:

setInterval(
    (function() { 
     $('#Fader').fadeOut('slow', function() { 
      setTimeout(function() { $('#Fader').load().fadeIn('slow'); }, 300); 
     }); 
    }) 
    , (200)) 

jQuery的應該罰款。它鏈接到Div的推子ID並進行淡入淡出和加載。

本來DIV生成使用相同結構的Page_Load方法的報價和這個工作。現在,我需要在需要時調用它,而不是在Page_Load上,而是在jQuery刷新上。

到目前爲止,我有股利刷新進出,但它是空白的(如果我把它恢復到上Page_Load方法,同樣的報價進入和離開)。它沒有到達ASP線或它沒有執行它。我可能無法像「Page_Load」那樣使用「運行感言」來工作,可能是因爲我不知道如何調用它。

我不知道如何做C#,jQuery的ASP或代碼behinding真的。請幫忙!

回答

1

這些都是你需要做的,用jQuery和什麼樣的WebMethod步驟:

1)你會改變你的runTestimonial()功能爲WebMethod將返回一個字符串(隨機告別賽)。所以你的函數的簽名看起來是這樣的:

[WebMethod] 
public static string runTestimonial() 
{ 
    return randomTestimonial; //include your code 
} 

2)在你的文件的頭部添加jQuery庫。

<script src="http://code.jquery.com/jquery-latest.js"></script> 

3)創建一個函數,將做您的webmethod一個Ajax調用。

function getTestimonial() 
{ 
    $.ajax({ 
    type: "POST", 
    url: "Default.aspx/runTestimonial", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     $("#Fader").html(msg); //msg contains the response from the server, this appends it to the div 
    } 
    }); 
} 

4)您在您的標記格將不會是一個服務器控件,所以刪除onload。因此,它看起來就像這樣:

<div class="testimonial" ID="Fader"></div> 

5)我們的任務基本上完成,只要確保打電話給你的setInterval裏面你getTestimonial()功能。

[WebMethod]屬性在System.Web.Services庫中找到的,所以一定要確保它包含在你的頁面的頂部:

using System.Web.Services; 

這一切,應該工作。

+1

:O這是很多工作,謝謝先生。我開始玩了。到目前爲止,我只是很難將所有東西放在webmethod中而不會出錯。我可能不得不繼續排除故障,但我會告訴你它是怎麼回事! – Kiwizoom

+0

我一直在玩它,仍然有麻煩。我不知道它是否與網址有關?我正在處理的頁面是一個ascx;基本上這只是報價塊,任何繼承主人的頁面都會顯示。 – Kiwizoom

+0

哦,我認爲它不應該與URL有關,WebMethod也應該可以從那裏訪問。但也許嘗試在同一頁面上做,看看會發生什麼? –

0

簡單地說,C#是服務器端,所以runTestimonial不會在客戶端的瀏覽器中存在的方法。您需要創建一個使用jQuery通過ajax請求調用服務器的JavaScript函數。我會建議檢查一些關於jQuery/ajax/ASP.Net的教程。看起來你錯過了一些基本面。希望有所幫助!

+0

這是很多步驟。我一直在盯着各種各樣的方法幾天。其中一個問題是我期望解決這個問題,但是我不知道這些語言中的任何一種的基礎知識,因此很難立即從3個不同的國外基金會中建立起來。我希望我知道他們中的至少一個。 Ajax看起來很複雜,嗯。你認爲我應該先看看什麼? – Kiwizoom

+0

您可能正在查看低級別的ajax,如果您使用jQuery做ajax,那很簡單:'.ajax({})' – doogle

+0

我正在看它..我不知道該怎麼做它。 – Kiwizoom

相關問題