PHP中文俱乐部's Archiver

dengzi725 发表于 2007-6-26 15:15

发一个ajax post 中文的解决方法

ajax的post方式,可以解决大容量文本信息的提交。
由于页面提交的都是UTF8 编码格式。所以在服务器端接受的到也是UTF8的乱麻格式。我们可以在服务器端对UTF8 编码的请求串进行转化。具体请看下面的代码片断。

1。页面请求[code]<script language="javascript">
function submitMsgForm(){
        var receiver = document.getElementById("receiver").value;
        var title = document.getElementById("title").value;
        var content = document.getElementById("content").value;
        var params = "receiver="+receiver+"&title="+title+"&content="+content;
        var url = "message.php";
        sendCall(url, params);
}
</script>

<form name="form" action="" method="post">
<div id="xxxx"></div>
<TABLE>
<TR>
        <TD>receiver</TD>
        <TD><INPUT TYPE="text" NAME="receiver" id="receiver" ></TD>
</TR>
<TR>
        <TD>title</TD>
        <TD><INPUT TYPE="text" NAME="title" id="title" ></TD>
</TR>
<TR>
        <TD>content</TD>
        <TD><INPUT TYPE="text" NAME="content" id="content" ></TD>
</TR>
<TR>
        <TD></TD>
        <TD><INPUT TYPE="button" name="submit" value="submit" onclick="submitMsgForm()"></TD>
</TR>
</TABLE>

</form>


<script language="javascript">
var xmlHttp;
function sendCall(url, params) {
        if (window.ActiveXObject) {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        } else if (window.XMLHttpRequest) {
                xmlHttp = new XMLHttpRequest();
        }
        xmlHttp.onreadystatechange = callBack;
        xmlHttp.open('POST', url, true);
        xmlHttp.setrequestheader("content-length",params.length);
        xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xmlHttp.setRequestHeader("Connection", "close");
        xmlHttp.send(params);
}

function callBack() {
        if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                        document.getElementById("xxxx").innerHTML = xmlHttp.responseText ;
                }
        }
}
</script>[/code]2. server 端接受到请求并响应
[php]<?
require_once('charsethelp/charset.php');

$charset = new charset();
$receiver = $charset->utf82gb($receiver);
$title = $charset->utf82gb($title);
$content = $charset->utf82gb($content);

$content = $receiver . $title . $content;
echo $content;
exit(0);
?>[/php]

各位网友可以试试看。 附件是一个不同字符集之间转化的代码表。
:shocked:

dengzi725 发表于 2007-6-26 15:16

回复: 发一个ajax post 中文的解决方法

刚才一看我的注册日期是04年。吓死人了。 我都不知道我什么时候注册过的。时间过的太快了。

Maxwin 发表于 2007-6-27 09:23

回复: 发一个ajax post 中文的解决方法

不错,赞一个

yuanbin 发表于 2007-7-17 15:28

回复: 发一个ajax post 中文的解决方法

saasd

ronaldo0903 发表于 2007-8-2 00:56

回复: 发一个ajax post 中文的解决方法

不错 顶一个!

china 发表于 2007-8-8 09:19

回复: 发一个ajax post 中文的解决方法

ding......

carset 发表于 2007-11-12 23:00

回复: 发一个ajax post 中文的解决方法

打击你一下.任何一个javascript框架都可以做到post上传String.prototype.或者jquery.

作为的字符串转换,无论怎么写.也不如 iconv 效率高.图方便.可以用 mb_convert_variables

pass2936 发表于 2007-11-22 16:28

回复: 发一个ajax post 中文的解决方法

今天还真帮了我一个大忙,顶楼的谢谢

renwuxun 发表于 2007-12-4 12:23

回复: 发一个ajax post 中文的解决方法

大家有没有人会ajax上传文件的...

dengzi725 发表于 2008-1-16 18:22

回复: 发一个ajax post 中文的解决方法

对, iconv可以转换字符集。 :lol:

jiedushi 发表于 2008-3-24 14:38

回复: 发一个ajax post 中文的解决方法

charset.php代码呢?

deform 发表于 2008-8-3 15:16

回复: 发一个ajax post 中文的解决方法

支持

LAMP兄弟连 发表于 2008-8-17 09:58

回复: 发一个ajax post 中文的解决方法

好东西~~~









[img]http://home.lampbrother.net/attachment/200807/16/16_12161823113ibO.jpg[/img]

[url=http://www.lampbrother.net]http://www.lampbrother.net[/url]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.