如何在ajax请求中编码/解码utf8?
我的页面是用iso-8859-1编码的,但是如果在发现响应时再次发送和解码时如何轻松地将数据编码为utf8?
function Ajax(){
var _this = this;
this.url = null;
this.data = null;
this.success = null;
this.global = true;
this.timeout = JSON_TIMEOUT;
this.cache = false;
this.dataType = 'json';
this.type = 'post';
this.send = function(){
var jqxhr = $.ajax({
url : this.url,
data : this.data,
timeout : this.timeout,
cache : this.cache,
dataType : this.dataType,
type : this.type,
global : this.global
}
)
.success(this.success)
.error(function(){
// something
})
.complete(function(){
});
};
}
答案 0 :(得分:1)
你不需要做任何事情。 jQuery的ajax()函数将始终以UTF-8传输数据。
您的页面编码的内容并不重要,因为Javascript始终在内部使用Unicode并正确翻译您的iso-8859-1页面。
答案 1 :(得分:0)
我认为你需要使用这样的格式:
$.ajax({
type: "POST",
url: "WebMethodName",
data: {'fname':'dave', 'lname':'ward'},
contentType: "application/json; charset=utf-8",
dataType: "json"
});
答案 2 :(得分:0)
我分两步解决了这个问题...... 首先,在我在每个页面上都包含的名为“php_function.php”的PHP函数文件中,我添加了这个代码段:
'php_function.php':
<?php
/*-----------------------------------------------------------------------------
Codification($string)
$string = String to be consulted
Returns which encoding used in string
-----------------------------------------------------------------------------*/
function Codification($string) {
return mb_detect_encoding($string.'x', 'UTF-8, ISO-8859-1');
}
/*-----------------------------------------------------------------------------
Updates all parameters sent from any page.
-----------------------------------------------------------------------------*/
foreach($_GET as $key => $value)
$_GET[$key] = (Codification($value)=='UTF-8') ? utf8_decode($value):$value;
foreach($_POST as $key => $value)
$_POST[$key] = (Codification($value)=='UTF-8') ? utf8_decode($value):$value;
/*-----------------------------------------------------------------------------
GetPost($string)
$ string = name of the variable used
Receives the name of the variable and tries to get by Post and / or GET
Returns the value of the variable ...
-----------------------------------------------------------------------------*/
function GetPost($GetPost) {
$Ret = $_GET[$GetPost];
if(trim($Ret) == '')
$Ret = $_POST[$GetPost];
return $Ret;
}
?>
其次,我在我要求的页面中调用'php_function.php':
'requested_page.php':
<?php
require_once('php_function.php');
//... Get vars here
$var1 = GetPost('var1');
echo $var1;
//... Other implementations
?>
发件人页面类似于:
'的index.php':
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<form name="form1" method="post" type="multipart/form-data">
<input type="text" name="var1">
<input type="submit" name="Send" id="Send" value="Send">
</form>
<script>
$(function(){
Ajax = function(params) {
$.ajax({
url: 'requested_page.php', dataType: 'html', type: 'POST',
data: params, async: false,
error: function(e) { alert("Error: "+e.responseText); },
success: function(data) { alert(data); },
complete: function() {}
});
}
$("form").on("submit", function(e) {
e.preventDefault();
var params = $(this).serialize();
Ajax(params);
});
});
</script>
</body>
</html>
通过使用ajax发送像'aáàéêeoóu'这样的文字,没有编纂功能打印'aáÃÃÃêeoóu'(由ajax编码的UTF-8),编码功能打印'aáàéêeoóu'!!!