私のasp.netアプリケーションには、クリックするとjavascript関数を呼び出すボタンがあります。この関数は、pagemethods を使用して、VB コード ビハインドでサーバー側関数を呼び出します。これは正しく機能し、関数の最後に文字列を返しています。クライアント側で成功関数がヒットすると、戻り値は常に null になります。誰かが問題を見ていますか? 以下にリストされているのは、これがどのように機能するかを確認するためのコードの一部です。ありがとうございました。
ボタン
<asp:button id="btnSaveSoln" onclientclick="refreshParentTree()" runat="server" Text="Save" Cssclass="smalltextbutton"></asp:button>
refreshParentTree Javascript
function refreshParentTree() {
var chkUpdate = document.getElementById('chkUpdatePlanner');
var chkValue;
if (chkUpdate != null) {
if (document.getElementById('chkUpdatePlanner').checked = true) {
chkValue = 1;
}
else {
chkValue = 0;
}
}
else {
chkValue = 0;
}
var txtClient = document.getElementById('txtClientID');
var txtClientValue;
if (txtClient != null) {
txtClientValue = document.getElementById('txtClientID').value;
}
else {
txtClientValue = '';
}
PageMethods.save(document.getElementById('hdnProjectCreator').value, document.getElementById('txtTitle').value, document.getElementById('txtDescription').value, document.getElementById('hdnProjectManager').value, document.getElementById('txtSchedStart').value, document.getElementById('hdnApprover').value, document.getElementById('dropdownProjectType').value, document.getElementById('drpdownProjectPriority').value, txtClientValue, 0, document.getElementById('DropDownPhaseList').value, chkValue, document.getElementById('DropDownWorkWeekLengthList').value, document.getElementById('hdnTemplateID').value, saveSuccess, saveFailure);
}
サーバー側の保存機能 (VB)
<System.Web.Services.WebMethod()> _
Public Shared Function save(ByVal hdnProjCreator As String, ByVal titleTxt As String, ByVal desc As String, ByVal hdnProjManager As String, ByVal SchedStart As String, ByVal ApproverTxt As String, ByVal ddProjectType As String, ByVal ddProjectPriority As String, ByVal ClientIDtxt As String, ByVal ddEquipmentList As String, ByVal ddPhaseList As String, ByVal UpdatePlanner As String, ByVal ddWorkWeekLengthList As String, ByVal TemplateID As String)
***** SQL Computing here, removed for stack overflow - ddWorkWeekVisable, lnResult, parentID and taskgrpPCat are all strings *****
Dim returnString As String = ddWorkWeekVisable & ":" & lnResult & ":10:" & parentID & ":" & taskgrpPCat
Return returnString
End Function
ここから成功関数がヒットすると、アラートを使用して戻り文字列の値を確認しました。常に null を取得しています - 成功 JS 関数
function saveSuccess(response) {
alert('save success hit - response: ' + response)
}
また、サーバー側で以下をインポートしています
Imports System.Data.SqlClient
Imports System.Web.Configuration
Imports System.Web.Services
Imports System.Web.Services.WebMethodAttribute
Imports System.Web.SessionState.SessionStateMode
Imports System.Web.UI.WebControls
Imports System.Web
Imports System.Data
クライアント側に以下のスクリプトマネージャーも含めました
<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods="True">
</asp:ScriptManager>
ご協力ありがとうございました。過去にページメソッドを頻繁に使用していましたが、この場合、常に null を返す理由がわかりません。再度、感謝します。