【问题标题】:JQuery Autocomplete in MVC3MVC3 中的 JQuery 自动完成
【发布时间】:2012-03-01 09:59:04
【问题描述】:

对不起,我对 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...
---------------------^

所以我开始认为问题在于引号被呈现为 quot;而不是“。如果我尝试将我的源作为 ["Test1","Test2","Test3"] 它工作正常。有没有办法让剃刀不对字符串进行 HTML 编码?

[更新] 这就是问题所在。解决方案是使用 Html.Raw()

问题是剃须刀自动对 JSON 进行 HTML 编码。修复是使用 HTML.Raw

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

【问题讨论】:

  • 你的方法返回的 json 是什么?渲染的输出是什么?
  • @DidierGhys 这是 JSON 输出的示例 ["Customer1","Customer2","Customer3"]
  • @DidierGhys Firefox 有 $('#CustName').autocomplete({ source: ["Customer1","Customer2","Customer3"] });

标签: c# javascript jquery asp.net-mvc-3


【解决方案1】:

尝试使用$.parseJSON

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2011-09-10
    相关资源
    最近更新 更多