2012-06-01 2 views
-1

Пожалуйста, помогите. Я реализовал функцию jQuery, которая отправляет данные (объект JSON), но я не могу получить правильный ответ из-за проблемы с кодировкой. >>>>>>>>> Сайт закодированы: AJAX файл: UTF-8Неверная кодировка ajax jQuery

JS:

function loadvariant (hash) 
{ 
var id_quest = $("#sel_quest").val(); 
var nocache = Math.random(); 
// Отправляем ajax запроc 
    $.ajax({ 
    type: "POST", 
    url: "/wp-content/plugins/votefe/php/ajax/loadvote.php", 
    data: {hash:hash,id_quest:id_quest,nocache:nocache}, 
    dataType: "json" 
    }).done(function(msg) { 
    if (msg['return']==1) { 
     $('#tab_svariant .ovar').remove(); 
     for (var i=0;i<msg['variant'].length;i++) { 
      var html = "<tr class='ovar'><td>"+msg['variant'][i]['id']+"</td> 
<td>"+msg['variant'][i]['param']+"</td><td>"+msg['variant'][i]['style']+"</td><td> 
<input type=\"checkbox\" name=\"id_variant_"+msg['variant'][i]['id']+"\"> 
</td></tr>"; 
      $('#tab_svariant').append(html); 
     }  
    return true; 
} else { 
    alert(msg['return']+ " - Внутрення ошибка сайта. Попробуйте перезагрузить страницу, или 
обратитесь к разработчикам"); 
    return false; 
    } 
    }); 
} 

PHP:

session_start(); 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
header('Content-Type: application/json; charset=utf-8'); 
include_once("../voteconf.php"); 
$results = array(); 
$results['return'] = 0; 
//$results['variant'] = array(); 

$dbname = "two"; # Имя базы данных 
$username = "fedor"; # Имя пользователя в БД 
$host = "127.0.0.1"; # Хост MySQL сервера 
$passw = "353488"; # Пароль к БД 

$link = mysql_connect($host, $username, $passw); 
if (!$link) $results['return'] = 2; 
$db_selected = mysql_select_db($dbname, $link); 
if (!$db_selected) $results['return'] = 3; 

# Возвращаемые значения/ошибки 
# 0 - Скрипт не отработал 
# 1 - return ok (все хорошо) 
# 2 - не соединился с базой 
# 3 - не смог выбрвть базу. 
# 4 - не верный хеш 
# 5 - Не удалось получить ID вопроса. 
# 6 - Ошибка запроса выборки 

$hash = md5(VOTESECR); 
if ($hash!=$_POST['hash']) $results['return'] = "4787 > ".$hash." > ".$_POST['hash']; 

if (!isset($_POST['id_quest']) || $_POST['id_quest'] =='') $rezults['return'] = 5; 

$id_quest = mysql_real_escape_string(htmlspecialchars($_POST['id_quest'])); 
if ($results['return'] == 0){ 
$sql = "SELECT v.id as id, v.param as param, s.name as style FROM wp_s_variant v LEFT JOIN 
wp_s_style s ON v.id_style=s.id WHERE v.id_quest= '".$id_quest."'"; 
$res_variant = mysql_query($sql); 
if (!$res_variant) $results['return'] = 6; 
else {  
while ($rv = mysql_fetch_assoc($res_variant)) { 
    $results['variant'][] = $rv; 
} 
$results['return'] = 1;  
} 
} 

$json=json_encode($results); 
echo $json; 

HTML

<table id="tab_svariant"> 
    <tr> 
    <th width="30px">ID</th> 
    <th width="300px">Вариант ответа</th> 
    <th width="400px">Стиль</th> 
    <th width="60px">Выбрать</th>  
</tr> 
</table> 
+0

Не могли бы вы показать нам какой-то код, поэтому нам не нужно угадывать его в синем? [whathaveyoutried.com] (http://www.shathaveyoutried.com) – pduersteler

+2

Вам нужно показать некоторые усилия. Покажите код, который вы используете, ожидаемое поведение, фактическое поведение. –

+0

Да, мы можем видеть, что вы используете неясную кодировку на сайте, но это не код. – JJJ

ответ

1

Попробуйте ввести «contentType» в параметрах jQuery.ajax:

$.ajax({ 
    type: "POST", 
    url: "/php/ajax/loadvote.php", 
    data: {id_vote:id_vote,nocache:nocache}, 
    dataType: "json", 
    contentType: "utf-8" 
}).done(function(msg) { 
Смежные вопросы