2017-07-08 112 views
-1

我想從JavaScript調用C#服務器方法。在JavaScript函數中,警報即將到來,但不會調用服務器方法。從C#中的JavaScript調用服務器端方法

這是我的代碼。這是服務器端的方法:

public void ReloadData() 
{ 
    //here is the code 
} 

下面是客戶端功能:

function GetData() { 
alert("Function called"); 
PageMethods.ReloadData(); 
} 

現在,這裏的getdata函數被調用,警報也來,但在服務器端方法沒有被調用。 [我在調試模式下看過。]

+2

[Pagemethods在asp.net]的可能的複製(https://stackoverflow.com/questions/4313532/pagemethods-in -asp-net) – EdSF

+0

nope這不是重複的,因爲這裏調用了javascript,但不會在服務器端方法 –

+0

再次閱讀。當天結束時,您正在使用客戶端腳本向某個服務器資源發出請求。「Web Forms」具有'PageMethods'作爲您可以使用的_option_,並且需要一些設置。 – EdSF

回答

1

我相信你必須爲此使用AJAX。看看這裏:https://www.aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx

ReloadData會在你的代碼一個WebMethod後面,將是這個樣子:

[System.Web.Services.WebMethod] 
public void ReloadData() 
{ 
    //here is the code 
} 

然後從客戶端,你會做這樣的事情:

function GetData() { 
    $.ajax({ 
        type: "POST", 
        url: "CS.aspx/ReloadData", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: OnSuccess, 
        failure: function(response) { 
            alert(response.d); 
        } 
    }); 

}

CS.aspx是您的網頁的名稱。

繼續從您的評論下面;如果你不想使用jQuery那麼你的Javascript代碼會是這個樣子:

var xhr = new XMLHttpRequest(); 
xhr.open('GET', 'CS.aspx/ReloadData'); 
xhr.onload = function() { 
    if (xhr.status === 200) { 
     alert('Successful'); 
    } 
    else { 
     alert('Request failed. Returned status of ' + xhr.status); 
    } 
}; 
xhr.send(); 
+0

有沒有可能使用JavaScript? –

+0

@ s.k.Soni您使用JavaScript進行AJAX調用。 JavaScript代碼在客戶端瀏覽器中運行,而C#代碼位於服務器上。 HTTP(AJAX)是這兩種環境之間的通信方式。 – Pointy

+0

@ s.k.Soni,我已經更新了代碼。你問是否可以在沒有JQuery的情況下做到這一點? – w0051977

相關問題