2017-03-20 8 views
0

ユーザーがドロップダウンから任意の値を選択すると、Ajaxはサーバーを呼び出してJSONオブジェクトを通していくつかの値を返す必要があります。私は、パラメータを次のように私Asp.netコードを実行するとここで私のAJAXコードには何が欠けていますか?

は私Ajaxコード

//AJAX Security 
$('#ddlSecurityLevel').change(function() { 
    if ($('#ddlSecurityLevel').val() !== 'None') { 
     $.ajax({ 
      type: 'POST', 
      url: 'AjaxSecurity.aspx?securityLevelOrUser=SecurityLevel&SecurityKey=1&ReportName=TotalSales', 
      contentType: 'application/json; charset=utf-8', 
      data: 'json', 
      //dataType: JSON.stringify(Data), 
      cache: false, 
      success: AjaxSucceeded, 
      error: AjaxFailed 
     }); 
     function AjaxSucceeded(result) { 
      //alert("hello"); 
      alert(result.d); // output UNDEFINED 
     } 
     function AjaxFailed(result) { 
      alert("Error"); 
      alert(result.status + ' ' + result.statusText); 
     } 
    } 
}); 

Asp.net C#コード

public class GetResult 
{ 
    public string removedReportName { get; set; } 
    public string removedColumnNames { get; set; } 
    public string removedFilterNames { get; set; } 
} 

public partial class AjaxSecurity : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     JavaScriptSerializer js = new JavaScriptSerializer(); 

     string securityLevelOrUser = Request["securityLevelOrUser"].ToString(); 

     if (securityLevelOrUser.Equals("SecurityLevel")) 
     { 
      string jsonString = js.Serialize(getResultBySecurityLevel(Request["SecurityKey"], Request["ReportName"])); 
      Response.Write(jsonString); 
     } 
     else 
     { 

     } 
    } 

    private GetResult getResultBySecurityLevel(string securityLevel,string reportName) 
    { 
     GetResult getResult = new GetResult(); 

     string cs = ConfigurationManager.ConnectionStrings["HQWebMatajer13"].ConnectionString; 

     using (SqlConnection con = new SqlConnection(cs)) 
     { 
      SqlCommand cmd = new SqlCommand(); 
      cmd.Connection = con; 
      cmd.CommandText = "SELECT ReportHide,RColumnName,RFilterName FROM SecurityLevelDetails WHERE [email protected] and [email protected]"; 
      cmd.Parameters.AddWithValue("@ReportName", reportName); 
      cmd.Parameters.AddWithValue("@SecurityLevel", securityLevel); 

      con.Open(); 
      SqlDataReader rd=cmd.ExecuteReader(); 

      while(rd.Read()) 
      { 
       getResult.removedReportName = rd["ReportHide"].ToString(); 
       getResult.removedColumnNames = rd["RColumnName"].ToString(); 
       getResult.removedFilterNames = rd["RFilterName"].ToString(); 
      } 

     } 

     return getResult; 
    } 

} 

あり、それはブラウザで値を返します

URL http://localhost:55047/AjaxSecurity.aspx?securityLevelOrUser=SecurityLevel&SecurityKey=4&ReportName=TotalSales

のResponse.Write {"removedReportName":"1","removedColumnNames":"ItemLookupCode,Department","removedFilterNames":"ExtendedDescription,DepartmentName"}

しかし、出力アラートが未定義ある

+0

ajax URLで、クエリ文字列パラメータはsecurityLevelOrUser、SecurityKeyおよびReportNameです。しかし、getResultBySecurityLevel()メソッドでは、2つのパラメータしかありません。また、このパラメータ名はクエリ文字列名と同じにする必要があります。一度チェックしてください –

+0

@BasantaMatia私のページの読み込み方法を確認してください –

+1

アラート(result.d)からdを削除してください。 –

答えて

0

コメントデータ: 'JSON' と警告(result.d)からDを削除します。警告JS内のデータにアクセスするには

あなたは、このようなあなたのPage_Loadメソッドで

function AjaxSucceeded(result) { 
    if(result!=null) 
    { 
     alert(result[0].removedReportName +"," result[0].removedColumnNames); 
    } 
} 

を書くことができ、あなたが

Response.Clear(); 
Response.ContentType = "application/json; charset=utf-8"; 
Response.Write(jsonString); 
Response.End(); 

、出力をクリアし、独自に記述する必要があるか確認してくださいthisリンク、これが必要なもの

+0

まだ未定義 –

+0

このように書いて一度チェックしてくださいalert(result.removedReportName) –

+0

'data: 'json''を削除する必要はありますか? –

関連する問題