2017-08-02 111 views
-1

嗨我建立了其中网络媒体库,WEBMETHOD jQuery的AJAX调用不返回任何结果

我有一个简单的webmethod从数据库中读取标签。

public class Tags 
     { 
      public string tag_ID { get; set; } 
      public string tag { get; set; } 
      public string total_count { get; set; } 
     } 

     [WebMethod] 
     public static List<Tags> GetTags() 
     { 
      using (SqlConnection conn = new SqlConnection()) 
      { 
       conn.ConnectionString = ConfigurationManager.ConnectionStrings["taggerConnectionString"].ConnectionString; 
       using (SqlCommand cmd = new SqlCommand()) 
       { 
        cmd.CommandText = "GetTagCount"; 
        cmd.Connection = conn; 
        List<Tags> tag = new List<Tags>(); 
        conn.Open(); 
        using (SqlDataReader sdr = cmd.ExecuteReader()) 
        { 
         while (sdr.Read()) 
         { 
          tag.Add(new Tags 
          { 
           tag_ID = sdr["tag_ID"].ToString(), 
           tag = sdr["tag"].ToString(), 
           total_count = sdr["total_count"].ToString() 
          }); 
         } 
        } 
        conn.Close(); 
        return tag; 
       } 
      } 
     } 

和一个javascript,我打电话按钮单击以显示结果在div中。 但是我没有收到任何结果。没有错误也正在显示。

$(document).ready(function() { $('#getTags').click(myFunction); }); 

     function myFunction() { 
      $.ajax({ 
       type: "POST", 
       url: "/App/WebForm1.aspx/GetTags", 
       data: '{}', 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: OnSuccess, 
       failure: function (response) { 
        alert(response.d); 
       }, 
       error: function (response) { 
        alert(response.d); 
       } 
      }); 

      function OnSuccess(response) { 
       var Tags = response.d; 
       $(Tags).each(function() { 
        var tag = this.tag; 
        $("#results").append(" <b>" + tag + "</b>. "); 
       }) 
      }; 
     } 
+0

嗨,大家好,我已经分别测试了给出的所有三个建议。没有积极的结果呢。 –

回答

0

在web.config中设置这样的:

<system.web.extensions> 
    <scripting> 
     <webServices> 
      <jsonSerialization maxJsonLength="2147483647"/> 
     </webServices> 
    </scripting> 
</system.web.extensions> 

你的web服务代码将是:

public class Tags 
{ 
    public string tag_ID { get; set; } 
    public string tag { get; set; } 
    public string total_count { get; set; } 
} 

[WebMethod] 
public static void GetTags() 
{ 
    using (SqlConnection conn = new SqlConnection()) 
    { 
     conn.ConnectionString = ConfigurationManager.ConnectionStrings["taggerConnectionString"].ConnectionString; 
     using (SqlCommand cmd = new SqlCommand()) 
     { 
      cmd.CommandText = "GetTagCount"; 
      cmd.Connection = conn; 
      List<Tags> tag = new List<Tags>(); 
      conn.Open(); 
      using (SqlDataReader sdr = cmd.ExecuteReader()) 
      { 
       while (sdr.Read()) 
       { 
        tag.Add(new Tags 
        { 
         tag_ID = sdr["tag_ID"].ToString(), 
         tag = sdr["tag"].ToString(), 
         total_count = sdr["total_count"].ToString() 
        }); 
       } 
      } 
      conn.Close(); 

      System.Web.Script.Serialization.JavaScriptSerializer jSearializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 

      string result = jSearializer.Serialize(tag); 
      System.Web.HttpContext.Current.Response.ContentType = "application/json"; 
      System.Web.HttpContext.Current.Response.Write(result); 
      System.Web.HttpContext.Current.Response.End();      
     } 
    } 
} 
+0

没有结果。不用找了。 –

1

你以后cmd.CommandText = “GetTagCount” 缺少一条线;它是cmd.CommandType = CommandType.StoredProcedure;

+0

它没有帮助。 –

+0

你说得对。但这不是根本原因。我的服务根本没有被调用。感谢帮助。 –

0

我想我找到了解决方案。

当我试图使用铬的网络选项卡进行故障排除..我得到了这个结果。

{"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"} 

从中我理解的是,其因为在模板配置的

在App_Start/RouteConfig.cs

这一行:

settings.AutoRedirectMode = RedirectMode.Permanent; 

在后的一个上SO(Authentication failed during call webmethod from jquery.ajx with AspNet.FriendlyUrls and AspNet.Identity

有人建议对它发表评论。

现在既然这样做了。任何人都可以建议专家&评论这条线的利弊。如果从安全角度来看它不是一个好主意,任何解决方法。