jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jQuery $.get()没有设置标头时的回复字符集?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚安装了 Winamp Song Requester,它是一个Winamp网络歌曲请求者插件,内置最小的http CGI服务器.

插件的作用是运行一个Web服务器,为一个html页面提供一些特殊的变量,它取代了请求的实际数据(播放列表,请求队列,歌曲中剩余的时间等).

我认为这是一个有趣而且很好的项目来学习一些jQuery所以我开始连接我自己的js代码来替换,修复和ajaxify服务的网站从插件,但我现在遇到了字符编码的问题.

页面上,您可以获得播放列表中所有歌曲的链接.当你点击其中一个链接时,我连接了我自己的jQuery点击@L_489_14@.因此,当你请求一首歌时我没有重新加载整个页面,而是执行$.get($(this).attr(‘href’,function(responsE){… code …})然后我使用replaceWith来使用新生成的队列替换当前队列,同时添加您的请求.我做同样的事情来显示/更新当前正在播放和搜索,以便后台获取所有内容,然后在动画中添加一些动画.

所有的jQuery / Ajax都很棒,但我遇到的最大问题是charset和queue / playlist中的歌曲名称.名称中的特殊字符(åäöé等)根本不起作用.

插件输出iso-8859-1 / latin1中的所有内容,标记中的Meta标签告诉浏览器该页面latin1.在浏览器中的正常页面刷新中,这很好用,并且特殊字符显示为正常.但是当我使用jQuery和$.get()来动态替换代码块时,特殊字符只显示为?

我认为问题在于,如果没有标题说明,jQuery认认为$.get()响应是UTF-8.该插件根本没有为encoding / charset设置任何标头,因为我无法控制所有后端以及设置了哪些标头我无法改变这一点.

我在插件的响应中获得的唯一标头是:

我希望你理解我的问题.我有一个页面,我无法控制后端,我必须使用的是生成的HTMl.我无法在响应中更改或添加标头.我需要告诉jQuery响应实际上是在latin1而不是UTF-8,以便特殊字符的编码不会中断.我在jQuerys ajaxSetup中尝试过scriptCharset:’iso-8859-1′,但这只适用于脚本/ json类型,我正在使用HTML响应.

是否有可能或任何其他可以虑的解决方法

解决方法

编辑:好吧我认为这是有效的(至少它在我的测试环境中工作,请参阅先前尝试的修订)
$.ajaxSetup({
    'beforeSend' : function(xhr) {
        xhr.overrideMimeType('text/html; charset=UTF-8');
    },});
$('#stuff').load('/yourresource.file'); // your ajax load

我所拥有的是UTF-8中设置的主文件和ISO-8859-1中设置的数据文件.没有上面的代码,我得到了一堆垃圾,测试字符串åäöé正如预期的那样.使用上面的代码,它加载åäöé正确编码.

大佬总结

以上是大佬教程为你收集整理的jQuery $.get()没有设置标头时的回复字符集?全部内容,希望文章能够帮你解决jQuery $.get()没有设置标头时的回复字符集?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。