簡體   English   中英

ASP .NET Ajax自動完成功能不起作用。 Webmethod沒有被調用

[英]Asp .net ajax autocomplete not working. Webmethod is not getting called

有人可以告訴我為什么WebMethod不能僅在一個頁面中觸發,這個相同的代碼可以在另一個頁面中工作,但不能在我希望它工作的頁面中工作。 我將整個代碼移到了一個新頁面中,在這里可以正常工作,但是如果我在實際頁面中使用它,則不會觸發webmethod。 不知道發生了什么。

    <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$=txtSkill]").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: '<% =ResolveUrl("HRMCareerEAF.aspx/GetSkills") %>',
                    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$=hfSkillID]").val(i.item.val);
            },
            minLength: 1
        });
    });
    </script>

                                                                                       <asp:TextBox ID="txtSkill" runat="server" style="text-align: center" />

    [WebMethod(EnableSession = true)]
    public static string[] GetSkills(string prefix)
    {
        HRMRecruitmentProcessDAL obj = new HRMRecruitmentProcessDAL();
        DataSet ds = obj.BindMstcommon(HttpContext.Current.Session["CandidateID"].ToString(), "GetSkillsDD", "%" + prefix + "%");
        List<string> skills = new List<string>();
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            skills.Add(string.Format("{0}-{1}", ds.Tables[0].Rows[i]["Skill_Desc"].ToString(), ds.Tables[0].Rows[i]["skill_id"].ToString() + "|" + ds.Tables[0].Rows[i]["Skill_GroupID"].ToString())); //ds.Tables[0].Rows[i]["Skill_GroupDesc"].ToString() + " : " +
        }
        return skills.ToArray();
    }

能請您檢查幾件事嗎

1)檢查是否能夠使用其他api測試工具(如郵遞員)調用api

2)如果您可以訪問它,請檢查Web開發人員工具控制台是否存在任何錯誤,例如404(未找到)或500(內部服務器錯誤)

3)修改您的

data: "{ 'prefix': '" + request.term + "'}",

 data: JSON.stringify({ prefix: request.term }),

請檢查“ <%= ResolveUrl(“ HRMCareerEAF.aspx / GetSkills”)%>'的值

我也不確定,但是嘗試擺脫(EnableSession = true)。

非常感謝您的支持。 我找到了問題和解決方案。

實際的問題是部分頁面回發后自動完成不起作用,並且我的txtskill位於asp:multiview的第三個視圖中,該視圖僅刷新updatepanel中的部分頁面。

如果頁面部分回發,則jQuery方法不綁定。 我在以下鏈接中找到了解決方案。

jQuery自動完成擴展器回發后不起作用

我修改后的代碼如下。

<script type="text/javascript">
      $(function () {
          SetAutoComplete();
      });
      $(document).ready(function () {
          var prm = Sys.WebForms.PageRequestManager.getInstance();
          prm.add_initializeRequest(InitializeRequest);
          prm.add_endRequest(EndRequest);

          // Place here the first init of the autocomplete
          SetAutoComplete();
      });

      function InitializeRequest(sender, args) {
      }

      function EndRequest(sender, args) {
          // after update occur on UpdatePanel re-init the Autocomplete
          SetAutoComplete();
      }
      function SetAutoComplete() {
          $("[id$=txtSkill]").autocomplete({
              source: function (request, response) {
                  $.ajax({
                      url: '<% =ResolveUrl("HRMCareerEAF.aspx/GetSkills") %>',
                      data: JSON.stringify({ 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]
                              };
                          }))
                      }
                  });
              },
              select: function (e, i) {
                  $("[id$=hfSkillID]").val(i.item.val);
              },
              minLength: 1
          });
      }
    </script>

非常感謝您的支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM