Jquery Autocomplete не работает на производственном сервере

0

Я пытаюсь связать имя пользователя из базы данных, но некоторые из них показывают его странную ошибку.

Файл ASPX

<script type="text/javascript">
$(document).ready(function () {
    SearchText();
});
function SearchText() { 
$(".autosuggest").autocomplete({
        source: function (request, response) {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "Default.aspx/GetAutoCompleteData",
                data: "{'username':'" + document.getElementById('txtSearch').value + "'}",
                dataType: "json",
                success: function (data) {
                    response(data.d);
                },
                error: function (result) {
                    alert('error');
                }
            });
        }
    });
}

Код позади

<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
<WebMethod()> _
        Public shared Function GetAutoCompleteData(ByVal username As String) As List(Of String)
        Dim result As New List(Of String)()
        Using con As New SqlConnection("Data Source=foo; Initial Catalog=db;user id=foo; password=foo;")
            Using cmd As New SqlCommand("select cust_name from customers where cust_name LIKE '%'+@SearchText+'%'", con)
                con.Open()
                cmd.Parameters.AddWithValue("@SearchText", username)
                Dim dr As SqlDataReader = cmd.ExecuteReader()
                While dr.Read()
                    result.Add(dr("cust_name").ToString())
                End While
                Return result
            End Using
        End Using
    End Function

Я попытался проверить в firebug. Net XHR. На вкладке "Post" это показывает

JSON


username
    "j"
Source
{'username':'j'}

На вкладке "Ответ" показано:

Server Error in '/' Application.
Unknown web method GetAutoCompleteData.
Parameter name: methodName 

Трассировки стека:

[ArgumentException: Unknown web method GetAutoCompleteData.
Parameter name: methodName]
   System.Web.Script.Services.WebServiceData.GetMethodData(String methodName) +178
   System.Web.Handlers.ScriptModule.OnPostAcquireRequestState(Object sender, EventArgs eventArgs) +204
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69

Обратите внимание, что тот же самый код работает на локальном компьютере, но не на рабочем сервере. В консоли его показ

"NetworkError: 500 Internal Server Error - http://foo.com/Default.aspx/GetAutoCompleteData"

Я не могу понять, где я ошибаюсь. Он показывает предупреждение об ошибке из вышеуказанного javascript. Может ли кто-нибудь помочь?

  • 0
    правильный ли формат данных в AJAX, который вы отправляете?
  • 0
    Существует ли метод GetAutoCompleteData на GetAutoCompleteData сервере? Это написано правильно?
Теги:
web-services
autocomplete

1 ответ

0

Ниже мой рабочий код, используйте его для целей сравнения, он действительно работает и для меня, это может вам помочь. Проверьте формат данных в ajax.

        $( "#txt_item").autocomplete({
            delay: 10,
            minLength: 1, 
            source: function(request, response) {
                $("#txt_item").addClass("ui-autocomplete-loading");
                    $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "cms/cms_gallery.aspx/GetAutoCompleteData", 
                    data: '{term: "' + $("#txt_item").val() + '" }', 
                    dataType: "json",
                    success: function(data) { 
                         response(data.d);   
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        $("#txt_item").removeClass("ui-autocomplete-loading");
                        alert(textStatus);
                    },
                    search: function () {
                        $("#txt_item").addClass("ui-autocomplete-loading");
                    },
                    response: function () {
                        $("#txt_item").removeClass("ui-autocomplete-loading");
                    } 
              });
            }
        });

Кодекс:

 [WebMethod]
public static List<string> GetAutoCompleteData(string term)
{
        List<string> result = new List<string>();
        OdbcConnection conn = new OdbcConnection(DB.DatabaseConnString());
        string query = "SELECT * from gallery WHERE (unique_no LIKE '%" + My_Helper.FormatStringforDB(term) + "%') limit 5;";
        if (conn.State == ConnectionState.Open)
            conn.Close();
        conn.Open();            
        OdbcDataReader dataReader = new OdbcCommand(query, conn).ExecuteReader();
        if ((dataReader != null) && (dataReader.HasRows))
        {
            while (dataReader.Read())
            {
                result.Add(dataReader["unique_no"].ToString());
            }
        }
        dataReader.Close();
      return result;
}
  • 0
    к сожалению нет справки :(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню