2011-11-23 60 views
0
$(function() { 
     $("#tbNominalAccounts").autocomplete({ 
      source: function (request, response){ 
       $.ajax({ 
       url: "TestPage3.aspx/GetUserNominalAccounts", 
       type:"POST", 
       datatype:"json", 
       data :{ searchText : request.term}, 
       success: function(data) 
       { 
        response(
         $.map(data, function(item) 
        { 
         return { label: item.NominalAccount, value:item.NominalAccount, id:item.NominalAccount} 
        })) 
       } 
      }) 
      } 
     }); 

    }); 

新增断点的方法和它击中了Ajax调用但是当我把一个断点方法GetUserNominalAccounts它doesent甚至达到它!任何想法为什么它不张贴?!jQuery的AJAX调用自动完成数据

我与#tbNominalAccounts ID的文本框只为背景资料

+0

您能分享您在Firebug或Chrome控制台中看到的确切错误吗?这将更容易诊断和帮助你。 –

+0

浏览器控制台或Fiddler说什么? –

+0

它表示发布'GetUserNominalAccounts'未经授权 –

回答

0

重新格式化您的数据,像这样:

pString = '{"searchText":"' + request.term + '"}'; 
    $.ajax({ 
     data: pString, 
... 

和你服务器端代码应该是正确的“装饰”,让页面访问

想我会从工作示例使用asp.net中添加一些代码:您可能需要此转换器的asp.net数据的通用处理:

dataType: "jsond", 
type: "POST", 
contentType: "application/json", 
converters: { 
    "json jsond": function(msg) 
    { 
     return msg.hasOwnProperty('d') ? msg.d : msg; 
    } 
}, 

编辑:而对于使用回报值:

focus: function(event, ui) 
{ 
    return false; // return "true" will put the value (label) from the selection in the field used to type 
}, 
+0

感谢它现在触及的方法,唯一的问题是,它需要很长时间来检索记录,当我把一个在我的return语句中打破标签,它显示了成千上万的记录,但它显示在我的文本框中!关于这个的任何想法?! –

+0

你应该在服务器端放置一些东西来限制返回的行数,根据你的偏好进行排序并限制为只有searchText值中的文本匹配 –

+0

它仍然不会写出到文本框,在我的服务器端代码中,我得到'return lstnominalAccounts.ToList();'当我将鼠标悬停在它上面时我得到了记录,我可以滚动通过他们,但它不会输出到文本框任何想法 –

0

尝试把contentType都在ajaxRequest:

contentType: "application/json; charset=utf-8", 

我注意到,使用jQuery的Ajax默认的内容类型时application/x-www-form-urlencoded工作不够好。

+0

内容类型确实帮助,谢谢 –