Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Ajax表单将语言设置为中文提交到不同的PHP文件?_Javascript_Jquery_Ajax_Forms_Special Characters - Fatal编程技术网

Javascript 如何使用Ajax表单将语言设置为中文提交到不同的PHP文件?

Javascript 如何使用Ajax表单将语言设置为中文提交到不同的PHP文件?,javascript,jquery,ajax,forms,special-characters,Javascript,Jquery,Ajax,Forms,Special Characters,我正在做一个中文项目(gb2312)。我们有一个表单,使用Ajax将客户输入数据从文件1提交到php文件2。这两个文件显示中文没有问题。但当相同的数据从文件1提交到文件2时,它变成了完全错误的字符。例如: 文件1 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <script src="http://ajax.googleapis.com

我正在做一个中文项目(gb2312)。我们有一个表单,使用Ajax将客户输入数据从文件1提交到php文件2。这两个文件显示中文没有问题。但当相同的数据从文件1提交到文件2时,它变成了完全错误的字符。例如:

文件1

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>

<div id="msg">0</div>

<form id="add-form" action="file2.php" method="POST">
<input type=text name='content' value='试试这个' >
<input type="button"  id="add-post" value="Run Code" />
</form>


<script>
$(document).ready(function()
{

$("#add-post").click(function()
{
    $("#add-form").submit(function(e)
    {
        $("#msg").html("<img src='/image/progress_bar.gif'/>");
        var postData = $(this).serializeArray();
        var formURL = $(this).attr("action");
        $.ajax(
        {
            url: formURL,
            type: "POST",
            data : postData,
            contentType: "application/x-www-form-urlencoded;charset=gb2312",
            success:function(data, textStatus, jqXHR) 
            {
                $("#msg").html('<pre>'+data+'</pre>');
            },
        });
        e.preventDefault(); //STOP default action
        e.unbind();
    });

    $("#add-form").submit(); //SUBMIT FORM
});
});
</script>


</body>
</html>

0
$(文档).ready(函数()
{
$(“#添加帖子”)。单击(函数()
{
$(“#添加表格”)。提交(功能(e)
{
$(“#msg”).html(“”);
var postData=$(this.serializeArray();
var formURL=$(this.attr(“操作”);
$.ajax(
{
url:formURL,
类型:“POST”,
数据:postData,
contentType:“application/x-www-form-urlencoded;charset=gb2312”,
成功:函数(数据、文本状态、jqXHR)
{
$(“#msg”).html(“”+数据+“”);
},
});
e、 preventDefault();//停止默认操作
e、 解除绑定();
});
$(“#添加表单”).submit();//提交表单
});
});
文件2

$chinese_content = iconv('UTF-8', 'GB2312', $_POST['content']);

两个文件都显示中文字符,没有问题。但当将中文内容从文件1提交到文件2时,内容会变得乱七八糟,而且似乎不是正确的字符。我认为问题应该在Ajax提交脚本中的某个地方,但不知道如何解决它


你能帮帮我吗?提前感谢。

是的,问题肯定是在Ajax请求时出现的。如果查看
contentType
属性的,您将看到以下注释:

W3CXMLHttpRequest规范规定字符集始终为UTF-8;指定另一个字符集不会强制浏览器更改编码

在为浏览器呈现页面时,可以返回gb2312字符,但Ajax请求似乎总是以UTF-8格式发送。因此,您需要让PHP脚本接受UTF-8,以便正确解析数据。我建议从Ajax请求中删除
contentType

PHP收到UTF8编码字符串后,可以使用以下函数将其转换回gb2312:


是的,我按照您的建议从Ajax请求中删除contentType头,并在文件2中使用PHP脚本来接受UTF-8。文件2中的内容显示了正确的字符。但这与文件2上的mysql数据库设置相冲突。这个解决方案给我们带来了另一个问题。我想知道是否有其他方法将gb2312内容提交到其他文件?谢谢。我用一个例子更新了我的答案,说明了如何将UTF8字符串转换为GB2312,然后用于数据库交互。
$chinese_content = iconv('UTF-8', 'GB2312', $_POST['content']);