使用ASP.Net中的AJAX PageMethods从数据库中获取JQuery AutoComplete TextBox在Internet Explorer中不起作用

时间:2017-06-20 07:53:03

标签: javascript c# jquery asp.net ajax

我需要使用AJAX从数据库中创建AutoComplete TextBox,我试过了。

Html代码......

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.0.min.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.9.2/jquery-ui.min.js" type="text/javascript"></script>
<link href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.9.2/themes/blitzer/jquery-ui.css"
    rel="Stylesheet" type="text/css" />
<script type="text/javascript">
    $(function () {
        $("[id$=txtSearch]").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: '<%=ResolveUrl("~/Default.aspx/GetCustomers") %>',
                    data: "{ 'prefix': '" + request.term + "'}",
                    dataType: "json",
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    success: function (data) {
                        response($.map(data.d, function (item) {
                            return {
                                label: item.split('-')[0],
                                val: item.split('-')[1]
                            }
                        }))
                    },
                    error: function (response) {
                        alert(response.responseText);
                    },
                    failure: function (response) {
                        alert(response.responseText);
                    }
                });
            },
            select: function (e, i) {
                $("[id$=hfCustomerId]").val(i.item.val);
            },
            minLength: 1
        });
    });  
</script>
Enter search term:
<asp:TextBox ID="txtSearch" runat="server" />
<asp:HiddenField ID="hfCustomerId" runat="server" />
<asp:Button ID="Button1" Text="Submit" runat="server" OnClick="Submit" />

C#代码

[WebMethod]
public static string[] GetCustomers(string prefix)
{
    List<string> customers = new List<string>();
    using (SqlConnection conn = new SqlConnection())
    {
        conn.ConnectionString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandText = "select ContactName, CustomerId from Customers where ContactName like @SearchText + '%'";
            cmd.Parameters.AddWithValue("@SearchText", prefix);
            cmd.Connection = conn;
            conn.Open();
            using (SqlDataReader sdr = cmd.ExecuteReader())
            {
                while (sdr.Read())
                {
                    customers.Add(string.Format("{0}-{1}", sdr["ContactName"], sdr["CustomerId"]));
                }
            }
            conn.Close();
        }
    }
    return customers.ToArray();
}

它在Chrome,Mozilla中工作正常但在Internet Explorer 11兼容模式下无效。有没有办法在IE兼容模式下工作? 我想纠正兼容模式中的错误,.. 在IE中它显示错误:

  

JavaScript运行时错误:&#39; JSON&#39;未定义

2 个答案:

答案 0 :(得分:0)

有效

<script src="http://yandex.st/json2/2011-10-19/json2.js" type="text/javascript"></script>

我刚刚添加了json2.js,现在它可以在所有浏览器中使用...

答案 1 :(得分:0)

试试这个......

df$consNA <- apply(df, 1, function(x) sum(cumsum(!is.na(rev(x))) == 0))

df$consNA
#[1]  5  9  5  7  7  9  4 10  5  5