0

我对 asp.net 和 javascript post and get 有疑问,我知道如何从连接到数据库的 asp.net 中的下拉列表中获取值,但是如何将内容发送到 asp.net 和 asp.net 将其发送回来。 ..

<div id="map" style="width: 500px; height: 500px">
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:RFIDConnectionString %>" 
            SelectCommand="SELECT neighborhood_name FROM [Neighborhood]"></asp:SqlDataSource>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
            ConnectionString="<%$ ConnectionStrings:RFIDConnectionString %>" 
            SelectCommand="SELECT street_name FROM [Street]"></asp:SqlDataSource>
         <asp:SqlDataSource ID="SqlDataSource3" runat="server" 
            ConnectionString="<%$ ConnectionStrings:RFIDConnectionString %>" 
            SelectCommand="select * from Street,neighborhood where Street_status='high' and street.neighborhood_id=neighborhood.neighborhood_id"></asp:SqlDataSource>
         <asp:SqlDataSource ID="SqlDataSource4" runat="server" 
            ConnectionString="<%$ ConnectionStrings:RFIDConnectionString %>" 
            SelectCommand="SELECT neighborhood_name FROM [Neighborhood]"></asp:SqlDataSource>

                </div>
4

2 回答 2

0

最好使用 AJAX 请求。从javascript调用asp.net函数也取决于浏览器,IE使用ActiveXObject而Mozilla家族使用XMLHttpRequest,你必须编写跨浏览器兼容的代码所以我建议你使用jquery,这样你就不用编写跨浏览器兼容的代码而是回答你的问题,这是我使用的:

Javascript:

向asp.net发送数据:

function CallAjax(actionUrl, postData, callbackFunc) {
    xmlHttp = GetXmlHttpObject(callbackFunc);
    xmlHttp.open("POST", actionUrl, true);
    xmlHttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    xmlHttp.send(postData);

}

function GetXmlHttpObject(handler) {
    var objXmlHttp = null;
    if (navigator.userAgent.indexOf("MSIE") >= 0) {
        var strName = "Msxml2.XMLHTTP";
        if (navigator.appVersion.indexOf("MSIE 5.5") >= 0) {
            strName = "Microsoft.XMLHTTP";
        }
        try {
            objXmlHttp = new ActiveXObject(strName);
            objXmlHttp.onreadystatechange = handler;
            return objXmlHttp;
        }
        catch (e) {
            alert("Error. Scripting for ActiveX might be disabled");
            return;
        }
    }
    if (navigator.userAgent.indexOf("Mozilla") >= 0) {
        objXmlHttp = new XMLHttpRequest();
        objXmlHttp.onload = handler;
        objXmlHttp.onerror = handler;
        return objXmlHttp;
    }
} 

JS函数的示例用法:

var catCode = "001";
// GetSubcategories is the name of asp.net WebMethod present at Default.aspx page
// SubCategoryResponse is the name of JS callback function that will receive data from server
CallAjax("Default.aspx/GetSubcategories", catCode, SubCategoryResponse);

从 asp.net 接收数据:

function SubCategoryResponse() {
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
        var resp = xmlHttp.responseText;
    }
}

ASP.NET:

Imports System.Web.Services
Imports System.Web.Script.Serialization

<WebMethod()> _
Public Shared Function GetSubcategories(ByVal catCode As String) As String
    Dim json As New JavaScriptSerializer()
    // Get subcategories into subcateg list
    Dim subcateg As IList(Of String())

    Return json.Serialize(subcateg)
End Function

System.Web.Extensions在您的标记中注册。

标记 - Default.aspx:

<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %>

网络配置:

您可能必须在 web.config 中设置正确的 httpHandlers 和 httpModules 才能成功进行 AJAX 请求/响应。请参阅配置 ASP.NET AJAX

于 2012-04-12T17:40:09.953 回答
0

如果我正确理解您的问题,您所说的是将您的 sql 数据源数据绑定到下拉列表控件。

编辑-您的问题是如何从 javascript 进行 asp.net 回发。

对于 asp.net(不是 asp.net ajax),您需要调用

__doPostBack((eventTarget, eventArgument);

其中 eventTarget 是您正在执行回发的控件的名称,而 eventArgument 是附加信息 - 您可能需要根据控件应该执行的操作等来填充它。

于 2012-04-12T13:54:18.537 回答