utf8 / iso-8859-1编码i $ .ajax()

时间:2011-05-29 18:47:49

标签: jquery

如何在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(){

            });
    };
}

3 个答案:

答案 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_pa​​ge.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'!!!