2012-02-08 2 views
0

Извините, что я очень новичок в JQuery ... Я не могу на всю жизнь понять, где моя ошибка. Когда я запускаю это, я не получаю никаких результатов. Когда я проверяю ошибку в Firefox и Chrome, она указывает на исходную строку. Я просто не вижу ничего плохого.JQuery Autocomplete in MVC3

Вот мой сценарий

<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] Вот ошибка синтаксиса светлячок плюет назад:

source: $.parseJSON([&quot;Customer1&quot;,&quot;Customer2... 
---------------------^ 

Так я начинаю думать, что проблема заключается в кавычки становятся визуализируется как Quot; вместо «.Если я попытаюсь поставить свой источник как« Test1 »,« Test2 »,« Test3 »], он отлично работает. Есть ли способ получить бритву, чтобы не кодировать HTML-код?

[UPDATE] Это был вопрос. решение использует Html.Raw()

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

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

И каков json, возвращенный вашим методом? Что такое рендеринг? –

+0

@DidierGhys Вот пример вывода JSON [«Customer1», «Customer2», «Customer3»] – copjon

+0

@DidierGhys И строка Firefox имеет $ ('# CustName'). Autocomplete ({ источник: [ Customer1 ", " Заказчик2 ", " Заказчик3 "] }); – copjon

ответ

1

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

$(document).ready(function() { 
    $('#CustName').autocomplete({ 
     //Firefox points to a syntax error here 
     source: $.parseJSON(@SqlHelper.getJSONArray("CustName", "dba.BillingInfo")) 
    }); 
}); 
+0

Просто попробовал ... все еще не работает ... – copjon