JQuery Автозаполнение, проблемы с вызовом функции

0

Я запускаю автозаполнение jQuery на экране, который вызывает функцию для получения данных с другой страницы.aspx. Настройка работает нормально при запуске локально, но когда я ее размещаю, я получаю сообщение об ошибке, которое я установил для сообщения, когда оно не работает. Единственная проблема заключается в том, что я не могу понять, почему она будет работать локально, но не при размещении (кстати, на локальном хосте).

Страница ASPX с полем автозаполнения:

$(document).ready(function () {
    document.getElementById('<%=txtCustomerType.ClientID %>').onclick = SearchText();
});

    function SearchText() {
        $(".autosuggest").autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "/../JQueryAutoComplete.aspx/GetAutoCompleteData",
                    data: "{'Customer':'" + document.getElementById(
                        '<%=txtCustomerType.ClientID %>').value + "'}",
                dataType: "json",
                success: function (data) {
                    response(data.d);
                },
                error: function (result) {
                    alert('An error occurred!');
                }
            });
        }
    });

    $(".autosuggest").autocomplete({
        select: function (a, b) {
            checkDirty = false;
            $(this).val(b.item.value);
            $("form").submit()
        }
    });

Код за страницей Jquery, которую он вызывает:

public partial class _Default : System.Web.UI.Page {

    protected void Page_Load(object sender, EventArgs e) {

    }
    [WebMethod]


    public static List<string> GetAutoCompleteData(string Customer) {
        List<string> result = new List<string>();

        SqlConnection dbConnection = new SqlConnection(GetConnection.GetConnectionString());

        using (SqlConnection con = dbConnection) {
            DataSet ds = new DataSet();
            using (SqlCommand cmd = new SqlCommand(
                    "PL_CustomerTypes_IntelliSearch", dbConnection)) {

                cmd.Parameters.Add("@SearchText", SqlDbType.NVarChar).Value = Customer;
                cmd.CommandType = CommandType.StoredProcedure;

                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;

                da.Fill(ds);

                DataTable dtResults = new DataTable();
                dtResults = ds.Tables[0];

                foreach (DataRow R in dtResults.Rows) {
                    string strResult = (string)R.ItemArray[0];
                    result.Add(strResult);
                }


                //while (dr.Read()) {
                //    string Name = (dr["ACNT_NAME"].ToString().Trim());
                //    result.Add(Name);
                //}

                return result;

            }
        }
    }

}
  • 0
    Есть ли у Firebug сетевая панель или отладчик сценариев?
  • 0
    После хоста успешно ли вызывается функция? потому что иногда абсолютный URL может измениться ..
Показать ещё 1 комментарий
Теги:
webforms

2 ответа

1
Лучший ответ

Проверьте URL:/../JQueryAutoComplete.aspx/GetAutoCompleteData. Перепишите его, не прибегая к "../".

Кроме того, чтобы убедиться, что вы можете получить дополнительную информацию из функции ошибки (см. Http://api.jquery.com/jQuery.ajax/), ее подпись - это функция (jQxhr, textStatus, errorThrown) [а не функция (результат)], используйте это вместо этого в качестве обработчика ошибок, чтобы вы могли проверить, не сбой из-за 404 или по какой-то другой причине:

function(xhr){
  alert(xhr.status + " - " + xhr.statusText);
}

xhr.status будет печатать код состояния http, например 404, 500 и т.д. xhr.statusText будет печатать текст, связанный с кодом, например, страница не найдена, внутренняя ошибка сервера и т.д.

  • 0
    Как я могу переписать это без ../? Файл jQuery находится в корне приложения.
  • 0
    Когда вы начинаете с / url относительно корня вашего сайта, поэтому /../ в начале url немного странно. Если QueryAutoComplete.aspx находится в корне вашего сайта, не могли бы вы просто написать URL-адрес в виде: /JQueryAutoComplete.aspx/GetAutoCompleteData?
Показать ещё 16 комментариев
0

Проблема заключалась в объявлении в JQueryAutoComplete.aspx файла кода свойств, который необходимо изменить для кода.

Свойство codefile препятствует доступу к.cs и тому месту, откуда пришел 404.

Ещё вопросы

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