【问题标题】:jQuery autocomplete special charactersjQuery自动完成特殊字符
【发布时间】:2017-02-08 10:25:12
【问题描述】:

我有一个 ajax 调用,它正在获取由 php json_encode 方法创建的值的 JSON 表示:

["Montérégie","Montréal - North Shore ","Montréal - South Shore"]

这些值是由 jquery 自动完成框从“控制器/ajax_autocomplete”中获取的。

  $(function(){   $("#regions").autocomplete({               
            source: "controller/ajax_autocomplete",
            contentType: "application/json; charset=utf-8"
}                                                          
            });            
    }); 

所有值都被 jQuery UI 的 ui-autocomplete 正确拾取,但特殊字符丢失了。 Montréal become Montréal, Montérégie become Montérégie ...

在 http 传输过程中,特殊字符肯定会被破坏,因为如果我手动将 JSON 表复制到 jquery 函数,问题就会消失。

    $(function(){   $("#regions").autocomplete({               
            contentType: "application/json; charset=utf-8",
            source: "["Montérégie","Montréal - North Shore ","Montréal - South Shore"]"
}                                                          
            });            
    }); 

以编程方式解码 html 实体适用于文本框值,但建议列表仍将特殊字符替换为 HTML 实体

$(function(){   $("#regions").autocomplete({              
        source: "controller/ajax_autocomplete",
        select: function( event, ui ) {
                event.preventDefault();
                this.value = $('<div />').html(ui.item.value).text();
        }                                                                                                                                                                                            
        });            
});   

解决方案是解码建议列表中的 HTML 实体

【问题讨论】:

标签: javascript php jquery json ajax


【解决方案1】:

我已通过将 ajax 输出包装到 php 'html_entity_decode' 方法中来解决服务器端的问题。

【讨论】:

    【解决方案2】:

    你应该使用:

    示例:

    var myData = ["Montérégie","Montréal - North Shore ","Montréal - South Shore"];
    encodeURIComponent(JSON.stringify(myData))
    

    【讨论】:

    • 您的示例使用的是本地数组,我已经在描述中提到自动完成在这种情况下可以使用。问题是在从服务器到客户端的 http 传输过程中,特殊字符被编码到 html 实体中。
    猜你喜欢
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 2011-09-23
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多