无法执行javascript jquery函数

时间:2012-02-24 18:34:17

标签: javascript jquery asp.net jquery-ui autocomplete

我通过回调方法有一个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>

在Code-Behind:

[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 个答案:

答案 0 :(得分:2)

你在最后忘记了一个结束“)”;

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

在修复该部分后,检查响应并在萤火虫等控制台中请求。

答案 1 :(得分:1)

尝试清理代码错误并再次运行:

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.
}

答案 2 :(得分:1)

$(document).ready()被调用了吗?如果没有,你是一个单独的文件javascript?如果是这样,可能文件本身无法访问,甚至没有调用ready()函数。检查<script src=""></script>标记是否包含JQuery文件和您的javascript文件。

答案 3 :(得分:0)

我不确定这是否会导致您的问题,但我在您的JQuery $.ajax电话中注意到您在这里有这一行:

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

如果我在data:调用的$.ajax字段中连接变量和字符串,我发现ajax调用失败。

试试这个:

在调用之外声明一个变量,如下所示:

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

然后将data:字段更改为:

data: dataToSend,

这可能会或可能不会解决您的问题,但它看起来更好!试试吧!

答案 4 :(得分:0)

谢谢大家。我终于弄错了。 Web方法需要静态才能调用它,并且表单中包含的ScriptManager也必须是EnablePageMethods=true

我的代码现在工作正常。非常感谢:)