Извините, я новичок в JQuery ... Я не могу понять, где моя ошибка. Когда я запускаю это, я не получаю никаких результатов. Когда я проверяю ошибку в 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);
}
[ОБНОВЛЕНО]
Вот синтаксическая ошибка, которую огрызает Firefox:
source: $.parseJSON(["Customer1","Customer2...
---------------------^
Итак, я начинаю думать, что проблема в том, что кавычки отображаются как квот; вместо ". Если я попытаюсь поставить мой источник как [" Test1 "," Test2 "," Test3 "], он будет работать нормально. Есть ли способ заставить бритву не кодировать строку в HTML?
[ОБНОВЛЕНО]
Это была проблема. Решение было с использованием Html.Raw ()
Проблема была в том, что бритва автоматически кодировала JSON. Исправление использует HTML.Raw
$('#CustName').autocomplete({
source: @Html.Raw(SqlHelper.getJSONArray("CustName", "dba.BillingInfo"))
});