如何從ajax呼叫vb.net方法,我在ajax中發送陣列作為引數,但它不作業。 這是Ajax和javascript的代碼
。 <script src="https://ajax. googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">< /script>
<script type="text/javascript">/span>
$("#Button1").click(function () {
var Years = document. getElementById("Options").querySelectorAll(".selected") 。
$.ajax({
type: "POST"。
url: "NewScenarioProfilePage.aspx/CalculateSum"。
data: "{'yearvalue ':'" Years " '}"。
contentType: "application/json; charset=utf-8"。
dataType: "json",
success: OnSuccess,
失敗。function (response) {
' this alert didn't show
alert(response.d) 。
}
});
});
而這是vb的方法 P.s 這個yearvalue可能是一個陣列,如果它是2個以上的值,或者它是一個整數變數,如果它是一個值
。 <System.Web.Services.WebMethod()>
Public Shared Function CalculateSum(ByVal yearvalue as Integer) 作為 String
MsgBox("calculate sum")
Dim 結果 As Integer = yearvalue
Return Result.ToString()
結束 功能
而msgbox并沒有啟動。 我不知道問題出在哪里。 這是我點擊按鈕時在檢查中出現的錯誤
jquery.min. js:4 POST https://localhost:44351/NewScenarioProfilePage.aspx/CalculateSum 401
send @ jquery.min.js:4
ajax @ jquery.min.js:4
(匿名) @ NewScenarioProfilePage:477。
dispatch @ jquery.min.js:3。
r.handle @ jquery.min.js:3。
uj5u.com熱心網友回復:
你得到一個401狀態代碼作為回應。所以,可能你缺少認證機制。
CodePudding
嗯,我認為你需要洗掉服務器端的msgbox--它將在很大程度上擾亂這一點,因為ajax呼叫是異步的。試試這個例子:
讓我們放入兩個文本框和一個按鈕,并從第一個文本框中取值,通過函式運行(比如說乘以2來玩)。
因此,我們的服務器代碼是這樣的:
<System.Web.Services.WebMethod()>
Public Shared Function CalculateSum(ByVal yearvalue As Integer) As String String
Debug.Print("cal sum run!!")
Dim 結果 As Integer = yearvalue * 2
Return Result.ToString()
結束 功能
對于客戶端來說,我們不能只是讓js代碼 "坐在 "那里--讓我們呼叫一個例程,并進行發布。
因此,讓我們放入一個標準的asp.net按鈕--但請注意我們如何只用該按鈕呼叫客戶端代碼(onClientClick),并且我們使用return false,因此該按鈕不會回貼。
<div>
輸入年份。
<asp: TextBox ID="TextBox1" runat="server"> </asp: TextBox>
<br />/span>
<asp: 按鈕 ID="Button1" runat="server" Text="Test Ajax call"
OnClientClick="mytest();return false" />
<br />
來自服務器的Ajax結果。<asp: TextBox ID="TextBox2" runat="server"> </asp: TextBox>
</div>/span>
<script>
function mytest() {
myyear = $('#TextBox1').val()
$.ajax({
type: "POST"。
url: "AjaxTestFun.aspx/CalculateSum"/span>,
data: JSON.stringify({ yearvalue: myyear }) 。
contentType: "application/json; charset=utf-8"。
dataType: "json",
success: function (rData) {
//把結果送回TextBox2中。
$('#TextBox2').val("來自服務器的結果=" rData.d)
},
failure: function (rData) {
alert("error" rData.d) 。
}
});
}
</script>
因此,現在的輸出看起來是這樣的:
因此,我使用了一個 debug.print 。使用那個或控制臺日志,因為當你開始使用ajax呼叫時--那么服務器端的msgbox往往會傷害你。
如果當前的網頁作業正常,那么在一個網頁方法中也可以作業(這不是一個認證問題)。
我還使用了JSON.stringify。它 "假定 "第一個值是文本,而第二個值可以是一個變數,如我使用的 mymyear,或者你可以使用引號下的'12335'。
這樣一來,stringify真正幫助了世界上的貧困和痛苦,因為你不必嘗試串聯一堆變數,以及一大堆亂七八糟的單引號或雙引號。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/321059.html
標籤:
