无法执行JavaScript的jQuery功能

问题描述:

我有一个通过回调方法的Jquery自动完成功能。但它似乎并没有运行。无法执行JavaScript的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; 
} 

看来,自动完成功能是没有得到所谓以及警报().. 有关如何调用它的任何建议?

新增: 检查堆栈跟踪后,它给了我一个错误

未知方法名GetNames

有什么建议?

+0

你可以在控制台输出返回的数据对象吗?只是为了确保回调成功被调用。 – rayfranco 2012-02-24 18:39:03

+0

为什么在你把它们带到这里之前,你没有打开javascript错误来查看错误? – Aristos 2012-02-24 18:47:48

+0

@vini结合我们所有3个答案,_jk._表示您需要修复多个语法错误(其中一个是缺少的括号_Marcin Necsord Szulc_)。然后用一个名为dataToSend的变量(或任何你想要它调用的)替换'data:'部分中的字符串文字。然后运行它,它应该继续工作。 – rcplusplus 2012-02-24 18:53:22

谢谢大家。我终于弄错了。 需要Web方法是为了调用它,也包括的ScriptManager的形式必须是EnablePageMethods=true

我的代码现在工作的一切优秀静态。非常感谢:)

你忘了一个结尾“)”;

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

修复该部分后,检查响应和请求在萤火虫或此类的控制台。

尝试清理代码中的错误并重新运行:

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

这只是在粘贴代码的问题。否则一切都好。我要求逻辑错误 – vini 2012-02-24 18:58:57

+0

@vini你说过:'似乎自动完成功能并没有像Alert()一样被调用。关于如何调用它的任何建议?'编码错误是为什么你的'alert'没有被触发,'autocomplete'没有被调用。你问为什么不是。如果代码不运行,则无法解决逻辑错误。 – 2012-02-24 19:16:26

+0

我相信你错误地理解了这个问题。函数没有被调用意味着它没有显示任何结果,也没有对我在代码隐藏中应用的断点作出反应。但是我承认我没有检查说明未知方法的Intellisense。现在可以帮助我吗? – vini 2012-02-24 19:24:19

我不知道这是否是造成您的问题或没有,但我在你的JQuery注意到$.ajax叫你在这里有这样一行:

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

我发现AJAX调用,如果我Concat的变量和字符串在$.ajax呼叫data:场失败。

尝试这种情况:

声明变量外呼这样的:

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

data:字段更改为这样:

data: dataToSend,

这可能或可能无法解决你的问题问题,但它看起来更好!无论如何都要试试!

是否$(document).ready()被调用?如果不是,你在一个单独的文件中的JavaScript?如果是这样,也许文件本身无法访问,并且ready()函数甚至没有被调用。检查包含JQuery文件和JavaScript文件的<script src=""></script>标签。