Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
183
rated 0 times [  187] [ 4]  / answers: 1 / hits: 32081  / 15 Years ago, thu, may 28, 2009, 12:00:00

I am trying to use javascript, without framework(prototype, jQuery,etc), to insert data passed from a html form to an mysql database. I have managed to get this working but, get a problem with some special characters commonly used in my language(æøå). utf-8 supports these characters, and everything works fine when I skip the javascript. However when I try to pass the content of the html form through javascript post function and executing the query with my working php script, every æøå is converted into æøå.



To break it down, does javascript somehow force a specific charset when no other is determined in the code? I have tried to specify charset in the header of the javascript post and the php file as well as the html form.



I believe it must be something wrong or missing in my javascript file, formpost.js:



    function sendText(visbool){
var http =new GetXmlHttpObject();
var url = sendtext.php;
var ovrskrift = document.form1.overskrift.value;
var cont = document.form1.content.value;

var params = overskrift= + ovrskrift + &tekst= + cont + &visbool= + visbool;
http.open(POST, url, true);

//Send the proper header information along with the request
http.setRequestHeader(Content-type, application/x-www-form-urlencoded);
http.setRequestHeader(Content-length, params.length);
http.setRequestHeader(Connection, close);

http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
// gjør noe smart her
}
}
http.send(params);
}


function GetXmlHttpObject()
{
var objXMLHttp=null;
if (window.XMLHttpRequest)
{
objXMLHttp=new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
objXMLHttp=new ActiveXObject(Microsoft.XMLHTTP);
}
return objXMLHttp;
}


sendtext.php:



<?php
//variabler for spørring
$date= date('Y-m-d');
$overskrift= $_POST[overskrift];
$ostr='36';
$tekst= $_POST[content];
//$tekst=test tekst;
$istr='32';
$bilde=;
$style=onlyinfo.css;
//$vis=$_POST['visbool'];
$vis=0;

require ('../config.php'); // henter informasjon om database tilkoblingen fra config.php

if (!$con){die('Could not connect: ' . mysql_error());} // lager feilmelding hvis tilkoblingen mislyktes

// spørring for databasen, konstrueres etter variablene som er angitt ovenfor
$sql=INSERT INTO tbl_info(dato,overskrift_tekst,overskrift_str,infotekst_tekst,infotekst_str,bilde,style,vismeg) VALUES(' . $date . ',' . $overskrift . ',' . $ostr . ',' . $tekst . ',' . $istr . ',' . $bilde . ',' . $style . ',' . $vis . ');
$result = mysql_query($sql); // kjører spørring og lagrer resultat i $result

mysql_close($con); // lukker database tilkoblingen
?>


createslide.php: (reserved .php extension for future code implementation)



<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.1//EN http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd>
<html xmlns=http://www.w3.org/1999/xhtml dir=ltr>
<head>
<title>inforMe: Legg til side</title>
<link type=text/css rel=stylesheet href=./css/style.css id=adminss>
<script src=./js/formpost.js></script>
<script type=text/javascript src=./tinymce/jscripts/tiny_mce/tiny_mce.js></script>
<script type=text/javascript>
tinyMCE.init({
mode : textareas
});
</script>

</head>
<body>
<div class=imgupload>
<input type=button value=Last opp bilde> <img src= />
</div>
<div class=form>
<form name=form1 method=post action=sendtext.php>
<label for=overskrift>Overskrift:</label>
<input type=text size=70 id=overskift name=overskrift><br />
<label for=content>Tekst:</label>
<textarea id=content name=content cols=50 rows=15>This is some content that will be editable with TinyMCE.</textarea>
<input type=button value=save draft onclick=sendText(0)/>
<input type=button value=save and publish onclick=sendText(1)/>
<input type=submit value=regular submit button/>
</form>
</div>

</body>
</html>


NB!
I don't really know where to put this information so.. well.. I decided to go with it here:
First of all thanks for all good suggestions below. I belive the question were answered. As to my problem, it is only partly solved.



It seems like the utf-8 charset is lost somewhere along the line here, if I create a new mysql database with Latin-1 charset and change the charset options in my files to iso-8859-1 it works exactly right. Since my test setup is based on all norwegian software(browsers, db server, etc), I suppose wherever it is not otherwise specified it will return iso-8859-1



NBB!
And now it's all good again. everything works fine when I add:



header('Content-Type: text/plain; charset=utf-8');



to the top of my sendtext.php file.


More From » html

 Answers
10

Try appending the charset to the content-type header like this:



application/x-www-form-urlencoded; charset=utf-8;


Also, in your document you should specify it is utf-8 in the header:



<META http-equiv=Content-Type content=text/html; charset=utf-8 />


You should probably also do encodeURI(value) on all your values so it's properly url encoded.


[#99442] Saturday, May 23, 2009, 15 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
tiasavannahw

Total Points: 448
Total Questions: 122
Total Answers: 113

Location: Maldives
Member since Tue, Dec 21, 2021
3 Years ago
tiasavannahw questions
Sun, Oct 11, 20, 00:00, 4 Years ago
Sat, Aug 29, 20, 00:00, 4 Years ago
Sat, May 30, 20, 00:00, 4 Years ago
Mon, Mar 23, 20, 00:00, 4 Years ago
;