невозможно выполнить функцию javascript jquery - PullRequest
0 голосов
/ 24 февраля 2012

У меня есть функция автозаполнения Jquery через метод обратного вызова. Однако это, кажется, не работает.

Вот мой код:

На стороне клиента:

<script type="text/javascript">

$(document).ready(function() { 
                alert("hi");
                 $("#Text1").autocomplete({
                     minLength: 0,
                     source: function (request, response) {
                         $.ajax({
                             type: "POST",
                             contentType: "application/json; charset=utf-8",
                             url: 'BlissMaker.aspx/GetNames',
                             data: "{ 'sname':'" + request.term + "' }",
                             dataType: "json",
                             dataFilter: function (data) { return data; },
                             success: function (data) {
                                 if (data.d != null) {
                                     response($.map(data.d, function (item) {
                                         return {
                                             label: item.Name,
                                             value: item.Id
                                         }
                                     }))
                                 }
                             },
                             error: function (XMLHttpRequest, textStatus, errorThrown) {
                                 alert(XMLHttpRequest.responseText);
                             }
                         });
                     },
                     focus: function (event, ui) {
                         $("#Text1").val(ui.item.label);
                         return false;
                     }
                 })
                    .data("autocomplete")._renderItem = function (ul, item) {
                        return $("<li></li>")
                            .data("item.autocomplete", item)
                            .append("<a><img src='" + item.icon + "' width='32' height='32' />  " + item.Name + "</a>")
                            .appendTo(ul);
                    };
            }
</script>

В коде позади:

[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<States> GetNames(string sname)
{
    List<States> sbStates = new List<States>();
    con = new SqlConnection("Data Source=PRATEEK\\SQLEXPRESS;Initial Catalog=BD;Integrated Security=True;Pooling=False");
    con.Open();

Me mee = (Me)Session["Me"];

qr = "SELECT FBFriends.FB_Id2, ActiveInfo.Name, ActiveInfo.Profile_Pic, ActiveInfo.Gender FROM [FBFriends],[ActiveInfo] WHERE FBFriends.FB_Id1='" + mee.Id + "' AND ActiveInfo.FB_Id=FBFriends.FB_Id2";
ds = new DataSet(qr);
da = new SqlDataAdapter(qr, con);
da.Fill(ds);

ds.Tables[0].Select(ds.Tables[0].Columns[1].ColumnName + " Like '%" + sname + "%' and " + ds.Tables[0].Columns[3].ColumnName + " = 'Female'");

foreach (DataRow row in ds.Tables[0].Rows)
{
    States st = new States();
    st.Id = row.ItemArray[0].ToString();
    st.Name = row.ItemArray[1].ToString();
    st.Value = row.ItemArray[1].ToString();
    st.Icon = row.ItemArray[2].ToString();
    sbStates.Add(st);
}

    return sbStates;
}

Кажется, что функция автозаполнения вызывается не так, как Alert () .. Любые предложения о том, как это назвать?

ДОБАВЛЕНО: После проверки трассировки стека выдает ошибку

Неизвестное имя метода GetNames

Есть предложения?

Ответы [ 5 ]

2 голосов
/ 24 февраля 2012

Вы забыли одно закрытие в конце ")";

$(document).ready(function() {
})

После исправления этой части проверьте ответ и запрос в консоли firebug или тому подобное.

1 голос
/ 24 февраля 2012

Вызывается ли $(document).ready() вообще?Если нет, вы Javascript в отдельном файле?Если это так, возможно, сам файл недоступен, а функция ready() даже не вызывается.Проверьте теги <script src=""></script> на наличие файлов JQuery и вашего файла javascript.

1 голос
/ 24 февраля 2012

Попробуйте очистить код ошибки и запустите снова:

Problem at line 19 character 43: Missing semicolon.
}

Problem at line 20 character 41: Missing semicolon.
}))

Problem at line 39 character 13: Expected ')' and instead saw ''.
}

Problem at line 39 character 13: Missing semicolon.
}
0 голосов
/ 25 февраля 2012

Спасибо всем .Я наконец получил свою ошибку.Веб-метод должен быть Статический , чтобы вызывать его, а также ScriptManager, включенный в форму, должен быть EnablePageMethods=true

Мой код теперь работает нормальноБольшое спасибо:)

0 голосов
/ 24 февраля 2012

Я не уверен, вызывает ли это вашу проблему или нет, но я заметил в вашем JQuery $.ajax вызове у вас была эта строка здесь:

data: "{ 'sname':'" + request.term + "' }",

Я обнаружил, что вызовы ajax не выполняются, если я объединяю переменные и строки в поле data: вызова $.ajax.

Попробуйте это:

объявляем переменную вне вызова следующим образом:

var dataToSend = "{ 'sname':'" + request.term + "' }";

затем измените поле data: на это:

data: dataToSend,

Это может решить, а может и не решить вашу проблему, но выглядит лучше! Попробуйте в любом случае!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...