-1

请帮忙。我在 jQuery 上实现了一个函数,它发送数据(JSON 对象),但由于编码问题,我无法得到正确的答案。>>>>>>>>>网站编码:AJAX文件:UTF-8

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>
4

1 回答 1

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) {
于 2012-06-01T08:18:49.040 回答