簡體   English   中英

使用json的javascript和asp.net

[英]javascript and asp.net using json

我對asp.net和javascript發布有疑問,我知道如何從連接到數據庫的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>

如果我正確理解您的問題,那么您所說的是將sql數據源綁定到dropdownlist控件的數據。

編輯-您的問題是如何從javascript執行asp.net回發。

對於asp.net(不是asp.net ajax),您需要調用

__doPostBack((eventTarget, eventArgument);

其中eventTarget是您要從中進行回發的控件的名稱,而eventArgument是其他信息-您可能需要根據控件應該執行的操作來填充它。

最好使用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:

您可能必須在web.config中設置正確的httpHandlers和httpModules才能成功進行AJAX請求/響應。 請參閱配置ASP.NET AJAX

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM