2012-06-01 7 views
-1

도와주세요. 데이터 (JSON 객체)를 보내는 jQuery에서 함수를 구현했지만 인코딩 문제로 인해 정답을 얻을 수 없습니다. >>>>>>>>>는 사이트가 부호화되어 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

jQuery.ajax의 옵션에서 "contentType"을 입력 해보십시오.

$.ajax({ 
    type: "POST", 
    url: "/php/ajax/loadvote.php", 
    data: {id_vote:id_vote,nocache:nocache}, 
    dataType: "json", 
    contentType: "utf-8" 
}).done(function(msg) { 
관련 문제