繁体   English   中英

AJAX-检索多个响应值?

[英]AJAX - retrieve more than one response value?

我有AJAX代码,该代码返回HTML字符串以附加到div当前的内容中。

现在,我还希望它返回一个值来更新隐藏字段HiddenFieldSortLetter,以便可用于将来的AJAX调用。

我可以添加:

ByRef varAJAXHiddenFieldSortLetterNew As String 

在参数的末尾

Public Shared Function fGetData

但是那我怎么改变

success: function (msg) { $("#<%=dvGridItems01.ClientID%>").append(msg.d); },

这样还可以更新隐藏字段HiddenFieldSortLetter?

        $.ajax(
        { type: "POST",
        url: "default.aspx/fGetData", 
        data: varData,
        contentType: "application/json; charset=utf-8", 
        dataType: "json",
        async: "true",
        cache: "false",
        success: function (msg) { $("#<%=dvGridItems01.ClientID%>").append(msg.d); }, 
        Error: function (x, e) { alert("Network error"); } }); 

ASP.NET 3.5 VB.NET:

<WebMethod()> _
    Public Shared Function fGetData(ByVal pageIndex As Integer, _
                                    ByVal isSearch As Integer, _
                                    ByVal searchText As String, _
                                    ByVal varAJAXHiddenFieldConsumerID As Object, _
                                    ByVal varAJAXHiddenFieldSortLetter As Object _
                                    ) As String

        Dim strReturn As String = ""

        Dim c1 As New cVDisplayGridItems
        With c1
            .pConsumerID = varAJAXHiddenFieldConsumerID
            .pAJAXSortLetter = varAJAXHiddenFieldSortLetter

            If isSearch = 1 Then
                'Search results
                .pSearchTerm = searchText.Trim
                .fGenerateHTMLForSearch()
            Else
            End If

            strReturn = .pHTML

        End With

        Return strReturn

    End Function

因此,对于服务器端,我创建了一个结构来保存要立即返回的两个值。 我将其序列化并返回。

   Public Structure dataResponse
    Dim  pHTML as String
    Dim  hidden as String
end Structure
<WebMethod()> _
Public Shared Function fGetData(ByVal pageIndex As Integer, _
                                ByVal isSearch As Integer, _
                                ByVal searchText As String, _
                                ByVal varAJAXHiddenFieldConsumerID As Object, _
                                ByVal varAJAXHiddenFieldSortLetter As Object _
                                ) As String

    Dim strReturn As String = ""

    Dim c1 As New cVDisplayGridItems
    With c1
        .pConsumerID = varAJAXHiddenFieldConsumerID
        .pAJAXSortLetter = varAJAXHiddenFieldSortLetter

        If isSearch = 1 Then
            'Search results
            .pSearchTerm = searchText.Trim
            .fGenerateHTMLForSearch()
        Else
        End If

        strReturn = .pHTML

    End With
    Dim retStruct as new dataResponse()
    retStruct.pHTML = strReturn
    retStruct.hidden = somefunctionthatgetsthehidden()
      System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();


    Return ser.Serialize(retStruct)
End Function

然后在客户端上,我更改了成功:看起来像...(如果将控件上的ClientIdMode设置为Static,则不必使用<%=的东西。

success: function (msg) {
    var myRes = JSON.parse(msg.d);
    $("#dvGridItems01").append(myRes.pHTML);
    $("#hdnTextBox").val(myRes.hidden);

 },

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM