一旦本文作者登录,我在每篇文章中都有一个“编辑”按钮。 当作者查看他的文章时,他可以点击按钮开始编辑。
在“onclick”事件之后...文章的ID将被发送到javascript,编辑框将使用ajax加载,使用另一个表单输入和按钮“保存”。
问题是,我的数据库编码是“UTF-8”...这意味着当用户添加新文章时,文章将在网站上正确显示。
但是,一旦他必须编辑的表单页面加载,并且一旦他点击保存,他将丢失所有数据并更改编码。
这是页面按钮(加载框的“编辑”按钮)和将出现编辑框的div:
echo '
<div id="edit"></div>
<input type="button" class="btn" id="edt'.$v[0].'" onclick="editme('.$v[0].');"
value="Edit">';
其中$ v [0]是文章的ID。
这是将加载本文框的javascript函数:
function editme(id){ /*function editme with the Article id as parameter*/
var req=new getXHR(); /* creation of xmlhttprequest object*/
var altr=Math.random(); /* a random to avoid URL caching in some browsers*/
var url='http://mywebsite.com/edit.php?n='+id+'&altr='+altr; /*the requesting URL*/
req.open('GET',url,true); //open the requesting url using GET method syncronously
req.onreadystatechange=function(){
if (req.readyState==4){ /*readyState*/
if (req.status==200){ /*status ==200*/
document.getElementById("edit").innerHTML=req.responseText; /*return response as an html form for editing*/
}
}
else{
document.getElementById("edit").innerHTML="Loading..."; /***wait loading message*/
}
};
req.send(null); /*paramerters sending is null, cuz we have GET method*/
}
请记住,根据浏览器客户端,req是我的XMLhttpRequest或ActiveXObject对象。
ajax函数将此Request的结果加载到div #edit:
中 'http://mywebsite.com/edit.php?n='+id+'&altr='+altr;
PHP页面是edit.php,这是源代码:
<?php
include 'global/config.php'; //configuration and initialization of the constants
include 'global/connection.inc.php'; // connection settings
include MODELS_DIR.'disp.php'; // here I wrote display functions
include MODELS_DIR.'update.php'; // here are all updating functions
if (isset($_GET['edit']) && !empty($_GET['edit']) && isset($_GET['n'])
&& !empty($_GET['n'])){ //test if there's the number of the article in the URL..etc
$update=new update(); // update object
$redirect=$update->updateArticle($_GET['n'],$_GET['pv']); //update article and return redirection string to redirect to a new page
echo '<script>window.location.href="'.$redirect.'";</script>'; //redirection
}
$objet=new disp(); // display the whole fields of the article in form
$annonce=$objet->viewItem($pdo->quote($_GET['n']),'Articles_tbl','id_annonce','');//view article in a form (editing mode)
include VIEWS_DIR.'edit.php'; //the form of the editing in the views directory
一旦ajax将文章的编号发送到edit.php控制器,它就会加载更新函数(update.php)和显示函数(disp.php)...并在视图中加载表单...编辑完成后..将用户重定向到已编辑文章的页面。
问题是所有文件的编码都是“UTF-8”......但我仍然有编码法语和阿拉伯语字符的问题。
提前谢谢。
答案 0 :(得分:1)
我不确定但也许问题是您的服务器发送的数据编码为iso-8859-1而不是utf-8。
在将数据发送到javascript之前尝试发送header("Content-Type: text/html; charset=UTF-8");
。