aliento Posted October 27, 2009 Share Posted October 27, 2009 Is a form submit script with ajax and i cant make it UTF-8 , do you have any idea? function xmlhttpPost(strURL,formname,responsediv,responsemsg) { var xmlHttpReq = false; var self = this; // Xhr per Mozilla/Safari/Ie7 if (window.XMLHttpRequest) { self.xmlHttpReq = new XMLHttpRequest(); } // per tutte le altre versioni di IE else if (window.ActiveXObject) { self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } self.xmlHttpReq.open('POST', strURL, true); self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); self.xmlHttpReq.onreadystatechange = function() { if (self.xmlHttpReq.readyState == 4) { // Quando pronta, visualizzo la risposta del form updatepage(self.xmlHttpReq.responseText,responsediv); } else{ // In attesa della risposta del form visualizzo il msg di attesa updatepage(responsemsg,responsediv); } } self.xmlHttpReq.send(getquerystring(formname)); } function getquerystring(formname) { var form = document.forms[formname]; var qstr = ""; function GetElemValue(name, value) { qstr += (qstr.length > 0 ? "&" : "") + escape(name).replace(/\+/g, "%2B") + "=" + escape(value ? value : "").replace(/\+/g, "%2B"); //+ escape(value ? value : "").replace(/\n/g, "%0D"); } var elemArray = form.elements; for (var i = 0; i < elemArray.length; i++) { var element = elemArray[i]; var elemType = element.type.toUpperCase(); var elemName = element.name; if (elemName) { if (elemType == "TEXT" || elemType == "TEXTAREA" || elemType == "PASSWORD" || elemType == "BUTTON" || elemType == "RESET" || elemType == "SUBMIT" || elemType == "FILE" || elemType == "IMAGE" || elemType == "HIDDEN") GetElemValue(elemName, element.value); else if (elemType == "CHECKBOX" && element.checked) GetElemValue(elemName, element.value ? element.value : "On"); else if (elemType == "RADIO" && element.checked) GetElemValue(elemName, element.value); else if (elemType.indexOf("SELECT") != -1) for (var j = 0; j < element.options.length; j++) { var option = element.options[j]; if (option.selected) GetElemValue(elemName, option.value ? option.value : option.text); } } } return qstr; } function updatepage(str,responsediv){ document.getElementById(responsediv).innerHTML = str; } Link to comment https://forums.phpfreaks.com/topic/179164-solved-ajax-form-submit-and-encoding-problem/ Share on other sites More sharing options...
aliento Posted October 27, 2009 Author Share Posted October 27, 2009 i found solution. Ajax can't send multybyte utf-8. I use a pregmatch on serverside to convert it to utf-8. $retval = utf8_encode( preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($retval)) ); Link to comment https://forums.phpfreaks.com/topic/179164-solved-ajax-form-submit-and-encoding-problem/#findComment-945323 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.