2017-08-16 37 views
1

我想实现我的解决方案的jQuery自动完成,但我得到一个错误的ReferenceError:响应没有定义的ReferenceError:响应没有在singleton设计模式自动完成的jQuery AJAX调用所定义

这里是我的代码

(function ($) { 
 
     $.SupportArticleObj = function (p) { 
 
      var SupportArticle = { 
 
       config: { 
 
        isPostBack: false, 
 
        async: false, 
 
        cache: false, 
 
        type: 'POST', 
 
        contentType: "application/json; charset=utf-8", 
 
        data: { data: '' }, 
 
        dataType: 'json', 
 
        baseURL: "Modules/SupportArticle/Services/SupportArticleWebService.asmx/", 
 
        url: "", 
 
        method: "", 
 
        ajaxCallMode: 0, 
 
        PortalID: PortalID, 
 
        UserModuleID: UserModuleID, 
 
        SecureToken: SecureToken, 
 
        UserName: UserName 
 
    
 
       }, 
 
       init: function() { 
 
        $("#searchSupport").autocomplete({ 
 
         source: function (request, response) { 
 
          searchTerm = request.term; 
 
          SupportArticle.getSearchData(searchTerm); 
 
         } 
 
        }); 
 
       }, 
 
       getSearchData: function (searchTearm) { 
 
        SupportArticle.config.method = "SearchSupportArticle"; 
 
        SupportArticle.config.url = SupportArticle.config.baseURL + SupportArticle.config.method; 
 
        SupportArticle.config.data = JSON2.stringify({ 
 
         searchTerm: searchTerm, 
 
         portalID: SupportArticle.config.PortalID, 
 
         userModuleID: SupportArticle.config.UserModuleID, 
 
         userName: SupportArticle.config.UserName, 
 
         secureToken: SupportArticle.config.SecureToken 
 
        }); 
 
        SupportArticle.ajaxCall(SupportArticle.config); 
 
       }, 
 
       ajaxSuccess: function (data) { 
 
        response(data); 
 
       }, 
 
       ajaxFailure: function() { 
 
        jAlert('Somethings went wrong', 'Support Article'); 
 
       }, 
 
       ajaxCall: function (config) { 
 
        $.ajax({ 
 
         type: SupportArticle.config.type, 
 
         contentType: SupportArticle.config.contentType, 
 
         cache: SupportArticle.config.cache, 
 
         url: SupportArticle.config.url, 
 
         data: SupportArticle.config.data, 
 
         dataType: SupportArticle.config.dataType, 
 
         success: SupportArticle.ajaxSuccess, 
 
         error: SupportArticle.ajaxFailure, 
 
         async: SupportArticle.config.async 
 
        }); 
 
       } 
 
      }; 
 
      SupportArticle.init(); 
 
     }; 
 
     $.fn.callSupportArticle = function (p) { 
 
      $.SupportArticleObj(p); 
 
     }; 
 
    })(jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script>

我所要做的就是在这里,我调用一个Web服务,它将搜索数据库上的记录并返回列表,我想将该列表绑定到文本框上作为自动完成。但问题是在浏览器中运行解决方案时出现ReferenceError错误:未定义响应。

我试图http://www.c-sharpcorner.com/UploadFile/da55bf/Asp-Net-autocomplete-textbox-using-jquery-json-and-ajax/作为参考。

我该如何解决的ReferenceError的问题:响应没有定义

While running on browser error seems like this. ReferenceError: response is not defined

+0

可以添加一个链接到正在使用的图书馆的来源? – jkris

+0

它的jQuery UI - v1.10.3 –

回答

1

写脚本如下图所示:

AutoDemoDataBase: function() { 
      $("#lytA_ctl29_txtSearchName").autocomplete({ 
       source: function (request, response) { 
        var param = JSON.stringify({ 
         userModuleID: UserModuleID, 
         portalID: autoComplete.config.portalId, 
         prefix: $("#lytA_ctl29_txtSearchName").val(), 
         userName: autoComplete.config.UserName, 
         secureToken: SageFrameSecureToken 
        }); 
        $.ajax({ 
         type: autoComplete.config.type, 
         contentType: autoComplete.config.contentType, 
         cache: autoComplete.config.cache, 
         url: autoComplete.config.baseURL + "GetNames", 
         data: param, 
         dataType: autoComplete.config.dataType, 
         async: autoComplete.config.async, 
         success: function (data) { 
          response($.map(data.d, function (item) { 
           return {          
            value: item.Name 
           } 
          })) 
          }, 
         error: function (response) { 
          jAlert(response.responseText); 
         }, 
         failure: function (response) { 
          jAlert(response.responseText); 
         } 
        }); 
       }, 
       select: function (e, i) { 
        $("#hfId").val(i.item.val); 
        $('#test').text(i.item.val); 
       }, 
       minLength: 1 
      }); 
     } 

你的Ajax成功功能超出响应范围。

+0

我需要遵循单例模式 –

+0

我已经更新了我的答案在单例模式中使用像上面 –

+0

我需要以单例模式解决此问题 –