繁体   English   中英

jQuery自动完成

[英]jquery autocomplete

这是我的功能:

<script type="text/javascript">
    $(document).ready(function () {
        SearchText();
    });
    function SearchText() {
        $(".autosuggest").autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "Default.aspx/GetAutoCompleteData",
                    data: "{'name':'" + document.getElementById('txtSearch').value + "'}",
                    dataType: "json",
                    success: function (data) {
                        response(data.d);
                    },
                    error: function (result) {
                        alert("Error");
                    }
                });
            }
        });
    }
</script>

这是我的代码:

[WebMethod]

public static List<string> GetAutoCompleteData(string name)
{
    OracleConnection con = new OracleConnection("Data Source=Client;User ID=cli; Password=cli123");
    List<string> result = new List<string>();
    con.Open();
    OracleCommand cmd = new OracleCommand("SELECT CLIENT_NO FROM SC_CLIENT WHERE CLIENT_NO LIKE :SearchText+'%'", con);


    cmd.Parameters.AddWithValue(":SearchText", name);
    OracleDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
        result.Add(dr["CLIENT_NO"].ToString());

    }
    return result;
}

但这给出了一条错误消息,例如“ ORA-01722:无效编号”。 我该如何解决?

Oracle中的+运算符仅适用于数字。 因此,当Oracle解析:SearchText+'%' ,它将两个术语都视为数字并执行隐式转换:

to_number(:SearchText) + to_number('%')

这将提高ORA-01722 Oracle中字符串连接的正确运算符是|| (或CONCAT函数)。

此外,正如@axrwkr在评论中指出的那样,如果您的列client_noNUMBER数据类型,并且Oracle决定将LIKE运算符的右侧转换为NUMBER ,则可能会遇到进一步的错误(我认为规则是LIKE将将双方都转换为VARCHAR2 ,但我不确定)。

如果client_noNUMBER ,为了使数据库和以后的读者都清楚可以编写:

SELECT CLIENT_NO FROM SC_CLIENT WHERE to_char(CLIENT_NO) LIKE :SearchText || '%'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM