对不起,我对JQuery很新...我不能为我的生活弄清楚我的bug在哪里。当我运行这个时,我没有得到任何结果。当我检查Firefox和Chrome中的错误时,它指向源代码行。我只是看不出任何错误。
这是我的剧本
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.js")" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#CustName').autocomplete({
//Firefox points to a syntax error here
source: @SqlHelper.getJSONArray("CustName", "dba.BillingInfo")
});
});
</script>
<p>Customer Name @Html.TextBox("CustName")</p>
SqlHelper.getJsonArray是我用来返回JSON字符串的方法。我已经检查并仔细检查它实际上是否返回了有效的JSON。
public static string getJSONArray(string column,string table)
{
string qry = "SELECT DISTINCT " + column
+ " FROM " + table
+ " WHERE " + column + " is not null"
+ " AND " + column + " <> ''"
+ " ORDER BY 1";
List<string> result = new List<string>();
SqlDataReader reader = execQry(qry);
while (reader.Read())
{
result.Add(reader[0].ToString());
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(result);
}
[UPDATE] 这是firefox随后吐出的语法错误:
source: $.parseJSON(["Customer1","Customer2...
---------------------^
所以我开始认为问题是引号被渲染为“;而不是“。如果我尝试将我的源码作为[”Test1“,”Test2“,”Test3“],它工作正常。有没有办法让剃须刀不对HTML进行字符串编码?
[UPDATE] 那就是问题所在。解决方案是使用Html.Raw()
问题是剃刀自动HTML编码JSON。修复程序使用的是HTML.Raw
$('#CustName').autocomplete({
source: @Html.Raw(SqlHelper.getJSONArray("CustName", "dba.BillingInfo"))
});
答案 0 :(得分:1)
尝试使用$.parseJSON
。
$(document).ready(function () {
$('#CustName').autocomplete({
//Firefox points to a syntax error here
source: $.parseJSON(@SqlHelper.getJSONArray("CustName", "dba.BillingInfo"))
});
});