0

ASP.NET WebMethod への ajax 呼び出しを行う必要があります。それを行うための次のコードを作成し、成功関数とエラー関数の両方にアラートを配置して、ajaxcall が適切に機能しているかどうかをテストしました。エラーとしてアラートを受け取り、できませんでした。私が間違っていたところを見つけてください。

これが私のコードです

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js">
<script type="text/javascript">
$(document).ready(function() {
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "Multiple_Markers.aspx/BindAddress",
        data: "{}",
        dataType: "json",
        success: function(data) {
           alert("success")
        },
        error: function(result) {
            alert("Error");
        }
    });
});
</script>

Multiple_Markers.aspx ページに記述された Web メソッドを次に示します。Web メソッドは完全に機能しています。

[WebMethod]
public static OrganizationBAL[] BindAddress()
{
    DataTable dt = new DataTable();
    List<OrganizationBAL> lstAddress = new List<OrganizationBAL>();
    ProgramDAL clsPgmDAL=new ProgramDAL();

    using (SqlConnection sqlcon = new SqlConnection(clsPgmDAL.connStr))
    {
        string str="select street_address as title,latitude as lat,longitude as lng,"+
                   "street_address+','+city+','+state+','+country as descritpion from dbo.tblOrganization_Address";
        using (SqlCommand cmd = new SqlCommand(str, sqlcon))
        {
            sqlcon.Open();
            SqlDataAdapter sqlad = new SqlDataAdapter(cmd);
            sqlad.Fill(dt);
            foreach (DataRow dRow in dt.Rows)
            {
                OrganizationBAL clsOrg = new OrganizationBAL();
                clsOrg.CITY = dRow["title"].ToString();
                clsOrg.LATITUDE = dRow["lat"].ToString();
                clsOrg.LONGITUDE = dRow["lng"].ToString();
                clsOrg.ADDRESS_TYPE_LOCATION = dRow["descritpion"].ToString();
                lstAddress.Add(clsOrg);
            }
        }
    }
    return lstAddress.ToArray();
}

上記の結果を達成するために私が書いたWebサービスですが、問題はまだ解決していません。

    [WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public OrganizationBAL[] BindAddress()
{
    DataTable dt = new DataTable();
    List<OrganizationBAL> lstAddress = new List<OrganizationBAL>();
    ProgramDAL clsPgmDAL = new ProgramDAL();

    using (SqlConnection sqlcon = new SqlConnection(clsPgmDAL.connStr))
    {
        string str = "select street_address as title,latitude as lat,longitude as lng," +
                   "street_address+','+city+','+state+','+country as descritpion from dbo.tblOrganization_Address";
        using (SqlCommand cmd = new SqlCommand(str, sqlcon))
        {
            sqlcon.Open();
            SqlDataAdapter sqlad = new SqlDataAdapter(cmd);
            sqlad.Fill(dt);
            foreach (DataRow dRow in dt.Rows)
            {
                OrganizationBAL clsOrg = new OrganizationBAL();
                clsOrg.CITY = dRow["title"].ToString();
                clsOrg.LATITUDE = dRow["lat"].ToString();
                clsOrg.LONGITUDE = dRow["lng"].ToString();
                clsOrg.ADDRESS_TYPE_LOCATION = dRow["descritpion"].ToString();
                lstAddress.Add(clsOrg);
            }
        }
    }
    return lstAddress.ToArray();
}
4

1 に答える 1

2

Webメソッドの前にWebサービスに以下の行を追加したことを確認してください

[System.Web.Script.Services.ScriptService]

Webサービスを使用するためにASMXファイルを作成することをお勧めします。使いやすいです。Webサービスを作成し、Webメソッドの前にWebサービスに上記の行を追加し、Webサービス内にWebメソッドを記述していることを確認します。

このURLも編集してください:

url: "Multiple_Markers.aspx/BindAddress",

Multiple_Markers.aspxページの代わりに、Webサービス名を記述する必要があります。それはあなたを助けるかもしれません。

于 2013-03-01T10:26:34.607 に答える