考虑$("#"+id).val()
var field = document.getElementById( id );
/* ... */
if( field.value != "" )
var jqxhr = $.get( "/user/ajaxtag/tag/" + $("#"+id).val(), function( data ) {
suggestionText = data;
//does something which i thing is non of problem's business
var arr = getListItems( field.value );
if ( field.value.length > 0 ){
createList( arr );
} else {
clearList();
};
// end of non of business
});
当在输入框中使用英语时会在更改时触发这段代码,ajax请求会成功响应,但是当使用像“س”这样的persian时,IE会发送此
GET /user/ajaxtag/tag/??_=1338567574102 HTTP/1.1\r\n
(我在wireshark上获得了这个信息)并用?取代了utf8字符,当我使用firefox时,问题不会发生,只在ie(不是一个惊喜ha?)我在标题中有这一行
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
在stackoverflow.com上的另一个问题,建议更改php.ini,但我在共享主机上,无法访问该文件。
我做了alert( $( "#" + id ).val() )
而警告的事情不是吗?是输入字符..像س
答案 0 :(得分:3)
您需要使用encodeURIComponent()函数对参数名称和值进行编码。
或为了使其符合RFC3986,您可以使用此功能:
/**
* encodeURIComponent() function is not 100% compatible with
* RFC3986 http://www.faqs.org/rfcs/rfc3986.html
*/
function encodeRFC3986(value) {
return encodeURIComponent(value)
.replace(/!/g, "%21")
.replace(/\*/g, "%2A")
.replace(/\(/g, "%28")
.replace(/\)/g, "%29")
.replace(/'/g, "%27");
}