Jump to content
  • 0

После запроса $.post возвращаются иероглифы


web.dmitriy
 Share

Question

 $.post(

 
 "wp-content/themes/mythe/page-konst.php",{
 
  scriptCharset: "utf-8",
  plan_i2:plan_i2,
  klass:klass
 
 },
 onAjaxSuccess2
);
 
// - запустим анимацию загрузки
 
function onAjaxSuccess2(data)
{
stopLoadingAnimation();
 
$('.top-const').append(data);
 
}
});
 
"Впервые пробую Аякс. По этому не  кричать на валидность"
- Проблема вот в чем. Делаю запрос который написан выше. В нем передаю две переменные. 
В ответ мне должен прийти кириллический текст. Но приходит ломаная кодировка в стиле иероглифов (((
Цифры и латиница идет нормально. 
.... В header <meta charset="utf-8">. В базе тоже норм все. 
Кто владеет мудростью , поделитесь ?
Link to comment
Share on other sites

21 answers to this question

Recommended Posts

  • 0

это связано с тем что вы вывели хеадер после того как контент стал поступать в браузер. уберите все пробелы с самого начала скрипта и открывайте его сразу же в начале документа
<?php - в самом начале, а затем хеадер... хотя если честно всё это танцы с бубном какие то.... с вордпрессом никогда у меня такого не было. скорее всего хост


и ещё... это ведь шаблон. просто, на будущее - логичнее привязать данный шаблон к странице и лбращаться к ней по заданному url, а не напрямую к шаблону

Link to comment
Share on other sites

  • 0

смотрите кодировку php скрипта, кодировку js скрипта и тд. 

Определить откуда что кодируется, вам поможет https://www.artlebedev.ru/tools/decoder/

Все , что я понял. Это то , что с CP1251 → UTF-8 .

Читал , что можно поставить кодировку в запросе. Только где это вписать. Это нигде не показано. 

Link to comment
Share on other sites

  • 0
var Utf8 = {    // public method for url encoding    encode : function (string) {        string = string.replace(/rn/g,"n");        var utftext = "";        for (var n = 0; n < string.length; n++) {            var c = string.charCodeAt(n);            if (c < 128) {                utftext += String.fromCharCode(c);            }            else if((c > 127) && (c < 2048)) {                utftext += String.fromCharCode((c >> 6) | 192);                utftext += String.fromCharCode((c & 63) | 128);            }            else {                utftext += String.fromCharCode((c >> 12) | 224);                utftext += String.fromCharCode(((c >> 6) & 63) | 128);                utftext += String.fromCharCode((c & 63) | 128);            }        }        return utftext;    },    // public method for url decoding    decode : function (utftext) {        var string = "";        var i = 0;        var c = c1 = c2 = 0;        while ( i < utftext.length ) {            c = utftext.charCodeAt(i);            if (c < 128) {                string += String.fromCharCode(c);                i++;            }            else if((c > 191) && (c < 224)) {                c2 = utftext.charCodeAt(i+1);                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));                i += 2;            }            else {                c2 = utftext.charCodeAt(i+1);                c3 = utftext.charCodeAt(i+2);                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));                i += 3;            }        }        return string;    }}

Вызываете

Utf8.decode(xmlhttp.responseText);
Link to comment
Share on other sites

  • 0

 

var Utf8 = {    // public method for url encoding    encode : function (string) {        string = string.replace(/rn/g,"n");        var utftext = "";        for (var n = 0; n < string.length; n++) {            var c = string.charCodeAt(n);            if (c < 128) {                utftext += String.fromCharCode(c);            }            else if((c > 127) && (c < 2048)) {                utftext += String.fromCharCode((c >> 6) | 192);                utftext += String.fromCharCode((c & 63) | 128);            }            else {                utftext += String.fromCharCode((c >> 12) | 224);                utftext += String.fromCharCode(((c >> 6) & 63) | 128);                utftext += String.fromCharCode((c & 63) | 128);            }        }        return utftext;    },    // public method for url decoding    decode : function (utftext) {        var string = "";        var i = 0;        var c = c1 = c2 = 0;        while ( i < utftext.length ) {            c = utftext.charCodeAt(i);            if (c < 128) {                string += String.fromCharCode(c);                i++;            }            else if((c > 191) && (c < 224)) {                c2 = utftext.charCodeAt(i+1);                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));                i += 2;            }            else {                c2 = utftext.charCodeAt(i+1);                c3 = utftext.charCodeAt(i+2);                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));                i += 3;            }        }        return string;    }}

Вызываете

Utf8.decode(xmlhttp.responseText);

Не помогло

Link to comment
Share on other sites

  • 0

База - utf-8

Файлы - utf-8

.htaccsses уже делал.

Это береться форма contact form 7 For WordPress. Она выводиться шорткодом в .php файле с которого Аякс возвращает результат . И вот результат набор символов , вместо названий полей, имен кнопок и .т.д.

может эта инфа более яснее откроет картину.

Link to comment
Share on other sites

  • 0

http://nashmebelru.s37.yourdomain.com.ua/

 

$.post(

 
 "wp-content/themes/mythe/page-konst.php",{
 
  scriptCharset: "utf-8",
  plan_i2:plan_i2,
  klass:klass
 
 },
 onAjaxSuccess2
);
 
// - запустим анимацию загрузки
 
function onAjaxSuccess2(data)
{
stopLoadingAnimation();
 
$('.top-const').append(data);
 
}
});
Link to comment
Share on other sites

  • 0

http://nashmebelru.s37.yourdomain.com.ua/wp-content/themes/mythe/page-konst.php

Выдает страницу в кодировке UTF-8, но для браузера нет информации о кодировке и он автоматически выбирает CP1251

Вам нужно в head скрипта page-konst.php вставить

<meta charset="utf-8">

или в начале скрипта

header('Content-Type: text/html; charset=utf-8');

при условии что после нет других указаний кодировки

так же возможно сделать это через .htaccess

AddDefaultCharset UTF-8

если не получается, пробуем

<IfModule mod_charset.c>CharsetDisable On</IfModule>AddDefaultCharset UTF-8
Link to comment
Share on other sites

  • 0

 

http://nashmebelru.s37.yourdomain.com.ua/wp-content/themes/mythe/page-konst.php

Выдает страницу в кодировке UTF-8, но для браузера нет информации о кодировке и он автоматически выбирает CP1251

Вам нужно в head скрипта page-konst.php вставить

<meta charset="utf-8">

или в начале скрипта

header('Content-Type: text/html; charset=utf-8');

при условии что после нет других указаний кодировки

так же возможно сделать это через .htaccess

AddDefaultCharset UTF-8

если не получается, пробуем

<IfModule mod_charset.c>CharsetDisable On</IfModule>AddDefaultCharset UTF-8

 

Речь идет о скрипте page-filter.php

"Это береться форма contact form 7 For WordPress. Она выводиться шорткодом в .php файле с которого Аякс возвращает результат . И вот результат набор символов , вместо названий полей, имен кнопок и .т.д.

может эта инфа более яснее откроет картину. "

Я уже писал, что .htaccess делал. В скрипте page-filter.php в начале стоит <meta charset="utf-8"> все безуспешно.. 

"На четвертом экране "Выберите кухню для себя" выбираем сначала Красный кружок и П-ОБРАЗНАЯ вылазит картинка. Кликаем на нее и вылазит форма с испорченной кодировкой. Вот ее и пытаюсь как то пофиксить"

Link to comment
Share on other sites

  • 0

По этой форме могу сказать следующее:

<meta charset="utf-8">
в начале скрипта бессмысленен, т.к. вы его вставляете уже в тело документа.

Возвращает ваш скрипт не UTF-8, а CP1251. Смотрите кодировку данного скрипта, если получится его выложить гляну что еще может быть с ним, если кодировка верная. Но почти 100% проблема в кодировке файла.

Link to comment
Share on other sites

  • 0

кстати - да, удивительно что отдает в формате utf8 но кодировка cp1251... тут без тестов уже сложно советовать...   возможно вообще проблммы в хостинге. а проверьте - с аяксом проблемы только у данного скрипта или вообще

Link to comment
Share on other sites

  • 0

это конечно не причина, но просто к слову - подметил. зачем вам столько http://joxi.ru/bmoon1EFnMN7my

Не судите строго. Просто от безисходности уже подключал все, что под руку шло 

+ нужно было сделать кучу слайдеров разных. js начали конфликтовать. Вот я и химичил там.

Любой скрипт после моего аякса возвращает ломаную кодировку. Беда не в базе как я думал. И не в CF7.

еще раз пишу. .htaccess пробовал.  iconv('windows-1251', 'UTF-8', ) пробовал. mysql_query("SET NAMES UTF8"); пробовал. 

 

/** Вот скрипт с файла page-filtr.php который возвращает мне беду **/

 
<meta charset="utf-8">
 
 
<?php
/*
Template Name: Filter
*/
define('WP_USE_THEMES', false);  
require_once('../../../wp-load.php'); 
 ?>
 
<?php  
 
$item_c = $_POST['color_i']; // получаю аяксом $.post скрипт написан вышел в переписке..
$item_c2 = $_POST['plan_i']; // получаю аяксом $.post скрипт написан вышел в переписке..
 
 
$args = array(
'post_type' => 'attachment',
'post_status' => 'any',
'tax_query' => array(
'relation' => 'AND',
array(
 
'taxonomy' => 'media_category', // your taxonomy
'field' => 'id',
'terms' => array($item_c) // term id (id of the media category)
),
array(
 
'taxonomy' => 'media_category', // your taxonomy
'field' => 'id',
'terms' => array( $item_c2) // term id (id of the media category)
)  
)
);
 
$the_query = new WP_Query( $args );
 
 
 
if ( $the_query->have_posts() ) {
 
while ( $the_query->have_posts() ) {
$the_query->the_post();
$link =  wp_get_attachment_url( get_the_ID()); ?>
<div class="item-k-i"><a href="#"  data-reveal-id="myModal<?php  echo $ii;?>" ><?php echo wp_get_attachment_image( get_the_ID());?></a></div>
 
 
<div id="myModal<?php  echo $ii;?>" class="reveal-modal">
    <div class="revies-pop-up">
  <div class="revies-pop-img">
  <?php echo "<img src='".$link."'>"; ?>
  </div>
  <div class="forma-revies-pop">
  <?php //mysql_query("SET NAMES UTF8");
  ?>
  <?php echo  do_shortcode('[contact-form-7 id=119" title="Форма отзывы]'); ?>
  </div>
 </div>
    <a class="close-reveal-modal">×</a>
</div>
 
<?php
}
} else {
echo "Not found";
};
 
 
 
wp_reset_postdata();
 
 
 ?>
Edited by web.dmitriy
Link to comment
Share on other sites

  • 0

)))  а зачем там в скрипте мета стоит то?   уберите, лучше header поставьте, как switch написал.  
 

попробуйте развернуть ваш магазин на другом сервере, хотя бы на бесплатном и посмотрите - будет работать или нет, я не уверен что дело в коде

Link to comment
Share on other sites

  • 0

)))  а зачем там в скрипте мета стоит то?   уберите, лучше header поставьте, как switch написал.  

 

попробуйте развернуть ваш магазин на другом сервере, хотя бы на бесплатном и посмотрите - будет работать или нет, я не уверен что дело в коде

пробовал уже хедер . ругается - (Warning: Cannot modify header information - headers already sent by (output started at /sata2/home/users/nashmebel/www/www.nashmebel.ru/wp-content/themes/mythe/page-filter.php:5) in /sata2/home/users/nashmebel/www/www.nashmebel.ru/wp-content/themes/mythe/page-filter.php on line 6)

хостинг - http://freehost.com.ua/

Link to comment
Share on other sites

  • 0

это связано с тем что вы вывели хеадер после того как контент стал поступать в браузер. уберите все пробелы с самого начала скрипта и открывайте его сразу же в начале документа

<?php - в самом начале, а затем хеадер... хотя если честно всё это танцы с бубном какие то.... с вордпрессом никогда у меня такого не было. скорее всего хост

и ещё... это ведь шаблон. просто, на будущее - логичнее привязать данный шаблон к странице и лбращаться к ней по заданному url, а не напрямую к шаблону

Танцы  с бубном сработали. Теперь все нормально. Все работает. Можете сами убедиться. 

Спасибо, Вам огромное )

Считаю тему закрытой )

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy