Asp.net 使用jqueryajax获取部分数据

Asp.net 使用jqueryajax获取部分数据,asp.net,jquery,Asp.net,Jquery,我不熟悉Jquery。我在aspx页面上有一个文本框。当输入两个字母时,文本框将使用jquery ajax从sql server数据库中获取土耳其邮政编码。但是,如果要从sql server返回的记录超过900条,jquery会给出一个内部服务器错误。我认为将数据带到文本框需要更多的时间,但jquery不允许这样做,并给出了一个内部错误。现在,我希望在第一次请求时提供部分数据。例如如果用户在文本框中写入34,ajax将不会带来以34开头的所有数据。它将带来前100个结果。然后,当用户将滚动条滑动

我不熟悉Jquery。我在aspx页面上有一个文本框。当输入两个字母时,文本框将使用jquery ajax从sql server数据库中获取土耳其邮政编码。但是,如果要从sql server返回的记录超过900条,jquery会给出一个内部服务器错误。我认为将数据带到文本框需要更多的时间,但jquery不允许这样做,并给出了一个内部错误。现在,我希望在第一次请求时提供部分数据。例如如果用户在文本框中写入34,ajax将不会带来以34开头的所有数据。它将带来前100个结果。然后,当用户将滚动条滑动到记录的末尾时,新记录将被查询并显示给用户。就像facebook上的帖子一样,有可能吗?如果是的话,我很高兴你能给我们分享一个示例代码。 这是我的密码

Javascript

$(function() {
$(".tb").autocomplete
        ({
             source: function(request, response) {
                $.ajax({
                    type: "POST",
                    url: "WebService_GetData.asmx/GetCmbPostaKod",
                    dataType: "json",
                    //data: "{ 'filterKey': '" + request.term + "','select1': '" + $('#cmbLogisticType').val() + "' }",
                    data: JSON.stringify({filterKey: request.term, lojtype:$('#cmbLogisticType').val(), ulke:$asp('ulke').val()}),
                    contentType: "application/json; charset=utf-8",
                    dataFilter: function(data) { return data; },
                    success: function(data) {
                        response($.map(data.d, function(item) {
                        return { value: item.PostaKodu, label: item.SemtAdi + ' / ' + item.IlceAdi + ' / ' + item.IlAdi + ' - ' + item.PostaKodu }
                        }))
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(errorThrown);
                    }
                });
            },
            minLength: 2,
            multiple: true,
            matchContains: true,
            formatItem: formatItem,
            formatResult: formatResult
        });
    });
aspx.cs背后的代码

    [WebMethod]
    public List<PostaKod> GetCmbPostaKod(string filterKey, string lojtype, string ulke)
    {

        string stmt;
        DataTable dt;
        //myToolKit.AddValueToCombo(cmbVergiDairesi, "0", "Seçiniz");
        //myToolKit.AddValueToCombo(cmbSatisElemani, "0", "Seçiniz");
        FunctionsToolkit.InjectionKontrolEt(ref filterKey);
        mySqlKit.DoConnect();
        /*
        stmt = string.Format(@"SELECT ILADI, ILCEADI, SEMTADI, POSTAKODU, ULKEKODU FROM TBLPOSTAKODLARI (NOLOCK)
                               WHERE POSTAKODU LIKE '{0}%' AND ULKEKODU='{1}' ORDER BY POSTAKODU", filterKey, (lojtype=="3")?ulke:lojtype);
        */
        stmt = string.Format(@"EXEC sp_get_postakodu '{0}','{1}'",filterKey,(lojtype=="3")?ulke:lojtype);
        dt = mySqlKit.DoDTstr(stmt);
        mySqlKit.DoDisconnect();
        return mySqlKit.ComboDList(dt);
    }
第页aspx

    <div id="panel1">
       Nakliye Tipini Seçiniz* :
       <select name="LogisticType" id="cmbLogisticType" onchange="toggle(this.value)">
           <option value="1" selected="selected"> Seçiniz </option>
           <option value="90"> Şehiriçi </option>
           <option value="90"> Şehirlerarası </option>
           <option value="3"> Uluslararası </option>
        </select>
        <!--
       <asp:DropDownList ID="cmbPostaKodu" name="cmbPostaKodu" runat="server" class="combo">
       </asp:DropDownList>
       <select ID="cmbIl" name="cmbIl" runat="server" onchange="ilceGetir(this.options[this.options.selectedIndex].value)" class="combo"></select>
       <select ID="cmbIlce" name="cmbIlce" runat="server" class="combo"></select>-->
    </div>
    <div class="slidingDiv">
        <div class="slidingDiv2">
              Hareket Noktası (Ülke):
                <div class="ui-widget">
                    <div class="text1">
                        <asp:TextBox ID="ulke" class="tb" runat="server" onfocus="this.value = ( this.value == this.defaultValue ) ? '' : this.value;return true;">Ülke Seçiniz</asp:TextBox>
                    </div>
                </div>

                 Varış Noktası (Ülke):
                <div class="ui-widget">
                    <div class="text1">
                        <asp:TextBox ID="ulke2" class="tb" runat="server" onfocus="this.value = ( this.value == this.defaultValue ) ? '' : this.value;return true;">Ülke Seçiniz</asp:TextBox>
                    </div>
                </div>
        </div>
        Hareket Noktası (Posta Kodu):
        <div class="ui-widget">
            <div class="text1">
                <asp:TextBox ID="city" class="tb" runat="server" onfocus="this.value = ( this.value == this.defaultValue ) ? '' : this.value;return true;">Posta Kodu Giriniz</asp:TextBox>
            </div>
        </div>
        Varış Noktası (Posta Kodu): 
          <div class="ui-widget">

            <div class="text1">  
                <asp:TextBox ID="city2" class="tb" runat="server" onfocus="this.value = ( this.value == this.defaultValue ) ? '' : this.value;return true;">Posta Kodu Giriniz</asp:TextBox>
            </div>
        </div>
    </div>

最简单的方法是,假设您使用的是SQL server,则使用TOP n限制服务器端查询结果集。使n成为一个对你有意义的数字。没有用户将浏览900个选项。比如说,20美元


如果用户需要更多选项,则需要更多的键入。

谢谢,这对我来说不是一个好的解决方案。如果用户向下滚动邮政编码,就可以看到整个数据。数据应该是零碎的。我不能用top n来限制。