2013-04-18 37 views
1

我使用jQuery自動完成功能和ASHX作爲源。但是,每個請求投用數200jQuery自動完成功能不適用於ashx的遠程數據

我的JavaScript錯誤:

$(function() { 
    $('#username input[type = "text"]').autocomplete({ 
     source: function (request, response) { 
      $.ajax({ 
       url: "UserName.ashx?term=" + request.term, 
       dataType: "json", 
       type: "POST", 
       success: function (data) { 
        response($.map(data, function (item) { 
         return { 
          label: item.Value 
         } 
        })) 
       }, 
       error: function (xhr, ajaxOptions, thrownError) { 
        alert(xhr.status); 
        alert(thrownError); 
       } 
      }); 
     } 
    }); 
}); 

的HTML:

<div id="username"> 
    <asp:Label Text="User name" runat="server" /> 
    <asp:TextBox ID="txtUserName" runat="server" /> 
</div> 

ASHX:

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest 
    context.Response.Clear() 
    context.Response.ContentType = "application/json" 

    Try 
     Dim oList As New List(Of ResultItem) 

     For Each File As System.IO.FileInfo In New System.IO.DirectoryInfo(ApplicationInfo.Settings.AbsoluteUserConfigPath).GetFiles(context.Request.QueryString("term") & "*.xml") 
      oList.Add(New ResultItem With {.Value = System.Text.RegularExpressions.Regex.Replace(File.Name, File.Extension & "$", String.Empty)}) 
     Next 

     context.Response.Write(New System.Web.Script.Serialization.JavaScriptSerializer().Serialize(oList)) 
    Catch ex As Exception 
     context.Response.Clear() 
     context.Response.ContentType = "text/plain" 
     context.Response.StatusCode = 500 
     context.Response.StatusDescription = ex.Message 
    End Try 
End Sub 

靜態內容它工作正常,但與此請求我得到以下錯誤:SyntaxError: JSON.parse: unexpected character

產生的JSON看起來像

[ 
    {"Value":"Item 1","Name":"","Description":""}, 
    {"Value":"Item 2","Name":"","Description":""}, 
    {"Value":"Item 3","Name":"","Description":""}, 
    {"Value":"Item 4","Name":"","Description":""} 
] 

,應該是有效的。

任何想法爲什麼它不工作?什麼是意想不到的特徵?

感謝您的回覆。

回答

1

我更改了源和JSON,然後使用它。

$(function() { 
    $('#username input[type = "text"]').autocomplete({ 
     source: "UserName.ashx" 
    }); 
} 
[ 
    {"object":"Item 1","label":"","Description":""}, 
    {"object":"Item 2","label":"","Description":""}, 
    {"object":"Item 3","label":"","Description":""}, 
    {"object":"Item 4","label":"","Description":""} 
] 
相關問題