Автозаполнение JQuery в MVC3 - PullRequest
       2

Автозаполнение JQuery в MVC3

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

Извините, я новичок в 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([&quot;Customer1&quot;,&quot;Customer2...
---------------------^

Итак, я начинаю думать, что проблема в том, что кавычки отображаются как квот; вместо ". Если я попытаюсь поставить мой источник как [" Test1 "," Test2 "," Test3 "], он будет работать нормально. Есть ли способ заставить бритву не кодировать строку в HTML?

[ОБНОВЛЕНО] Это была проблема. Решение было с использованием Html.Raw ()

Проблема была в том, что бритва автоматически кодировала JSON. Исправление использует HTML.Raw

$('#CustName').autocomplete({
    source: @Html.Raw(SqlHelper.getJSONArray("CustName", "dba.BillingInfo")) 
});

1 Ответ

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

Попробуйте использовать $.parseJSON.

$(document).ready(function () {
   $('#CustName').autocomplete({
       //Firefox points to a syntax error here
      source: $.parseJSON(@SqlHelper.getJSONArray("CustName", "dba.BillingInfo"))
   });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...