PHP + Jquery + JSON + IE =(

Статус
В этой теме нельзя размещать новые ответы.
похоже вас бесполезно направлять на правильную мысль. Дайте код ajax-запроса и код функции, которая обрабатывает его на стороне сервера.
 
Код:
    function loader(page,data0) {
	     $("#loading").fadeIn("fast");
	     $('title').html("Загрузка...");
	     $("#title").html("Загрузка...");
	     $("#content").hide("slow");
            $.post( "/ajax.php", { "page": page, "data0": data0 },
                function (data) {
                    //alert(data);
                        //alert(data.content);
			   
			   $("#content").html(data.content);
			   $("#title").html(data.menu);
		          //document.getElementById('title').innerHTML = data.menu;
				$('title').text(data.title);
			   $("#content").show("slow");
			   if(page!='') {
				   $("#b1").hide("slow");
				   $("#b2").show("slow");
			   } else {
				   $("#b2").slideUp("slow");
				   $("#b1").slideDown("slow");
			   }
			   $("#loading").fadeOut("slow");

                }
                , "json"
                );
	return false;

    }


ajax.php
PHP:
<?php
header('Content-type: application/json');


....


....

$page_data = mysql_fetch_array($result, MYSQL_ASSOC);
$content = "Хтмл код страницы...";

$data = '';
$data = $page_data;
foreach($data as $k => $v) $data2[$k] = win2utf($v);
$content=iconv("windows-1251", "utf-8", $content);

echo json_encode($data);
?>
 
Код:
    function loader(page,data0) {
         $("#loading").fadeIn("fast");
         $('title').html("Загрузка...");
         $("#title").html("Загрузка...");
         $("#content").hide("slow");
            $.post( "/ajax.php", { "page": page, "data0": data0 },
                function (data) {
                    //alert(data);
                        //alert(data.content);
               
               $("#content").html(data.content);
               $("#title").html(data.menu);
                  //document.getElementById('title').innerHTML = data.menu;
                $('title').text(data.title);
               $("#content").show("slow");
               if(page!='') {
                   $("#b1").hide("slow");
                   $("#b2").show("slow");
               } else {
                   $("#b2").slideUp("slow");
                   $("#b1").slideDown("slow");
               }
               $("#loading").fadeOut("slow");

                }
                , "json"
                );
    return false;

    }
ajax.php
PHP:
<?php
header('Content-type: application/json');


....


....

$page_data = mysql_fetch_array($result, MYSQL_ASSOC);
$content = "Хтмл код страницы...";

$data = '';
$data = $page_data;
foreach($data as $k => $v) $data2[$k] = win2utf($v);
$content=iconv("windows-1251", "utf-8", $content);

echo json_encode($data);
?>
Вы сами свой код смотрели вообще? Увас переменная $data вообще никак не обрабатывается, откуда-то берется $data2, хотя в конечном счете сервер отдает json_encode($data). И ответ сервера не обрабатывается потому что $data не в юникоде
 
Вы сами свой код смотрели вообще? Увас переменная $data вообще никак не обрабатывается, откуда-то берется $data2, хотя в конечном счете сервер отдает json_encode($data). И ответ сервера не обрабатывается потому что $data не в юникоде
Ну я могу полный код привести где это всё обрабатывается... толку то... запрос нормальный генерится, ответ тоже, но эксплорер его не воспринимает...
 
я вам объяснил уже почему эксплорер не воспринимает, если до вас не доходит - я за вас делать не буду ничего принципиально. ждите других помощников или идите на фриланс.
 
потому что ответ приходит не в юникоде и виноват не эксплорер а ваши кривые руки
 
улыбнул код :))
DangerD, задумайтесь над вопросом, что вы конвертируете в utf и где, и какой смысл конвертировать это там где вы это делаете :)

а конкретно вот эта часть кода, К.О. шепнул мне, что сдесь что-то не так :)
PHP:
$content=iconv("windows-1251", "utf-8", $content);
echo json_encode($data);
?>
 
Не хотел полный код выкладывать, ну да лапдно...

PHP:
<?php
//header('Content-type: application/json; charset=utf-8?);
header('Content-type: application/json');
usleep('500000');

ob_start();
print_r($_REQUEST);
$zz = ob_get_clean();
file_put_contents("access.log",$zz);

ob_start();


include("inc/config.php");

if($data0!='undefined') $get_data[0] = $data0;
if($data1!='undefined') $get_data[1] = $data1;


if($_SERVER['HTTP_HOST'] != $site_url) {
	$_GET['ppage'] = $ppage = $page;
	$page = explode(".",$_SERVER['HTTP_HOST']);
	$_GET['page'] = $page = $page[0];
	$subdomain = 1;
}



$lang = getlang();
$lid = getlangid();
//$cache = 1;



if(!isset($page)) $page="";
    $page = trim($page,"/");
    $page = htmlspecialchars($page);
    $page = utf2win($page);
    $result = mysql_query("SELECT * FROM `".$pref."_page` where `link` = '$page'");
    $page_data = mysql_fetch_array($result, MYSQL_ASSOC);
    $page_data['title'] = mui($page_data['title']);
    $page_data['menu'] = mui($page_data['menu']);
    if($page_data['subdomain'] == 1 and $subdomain != 1) {
	header("HTTP/1.1 301 Moved Permanently");
	header( "Location: http://$page_data[link].$site_url/$ppage" );
	die();

    }


//if($page_data['type'] != 2) echo "<html><title>$page_data[title]</title>";
if($page_data['state'] == 1 and ($page_data['type'] == 1 or $page_data['type'] == 2)) {
	if($page_data['type'] == 1) 
		if(file_exists("static/".$page_data['id']."_$lang.htm")) $buffer = implode(file("static/".$page_data['id']."_$lang.htm"));
		else {
			if(file_exists("static/".$page_data['id']."_$deflang.htm")) $buffer = implode(file("static/".$page_data['id']."_$deflang.htm"));
			else $error = 1;
		}
		if($subdomain == 1) {
			$buffer = str_replace("/$page","",$buffer);
			$buffer = str_replace("$page/","",$buffer);
		}
		echo $buffer;

	if($page_data['type'] == 2) { 
		if(file_exists("scripts/".$page_data['file']."")) {
			$maincache = "page_".md5($_SERVER['REQUEST_URI']);
			if($maincache == "") $maincache = "page_index";
			if(file_exists("cache/".$maincache) and $cache == 1)
				$content = file_get_contents("cache/".$maincache);
			else {
				ob_start();
				include("scripts/".$page_data['file']."");
				$content = ob_get_contents();
				if(function_exists("tidy_parse_string")) $content = tidy_parse_string($content);
				if($subdomain == 1) {
					$content = str_replace("/$page","",$content);
					$content = str_replace("$page/","",$content);
				}
				ob_end_clean();
			}
			if($cache == 1) {
				$handle = fopen("cache/".$maincache, 'w');
				fwrite($handle, $content);
				fclose($handle);
			}
			//if(!isset($hskip)) echo "<html><title>$page_data[title]</title>";

			if($show_content == 1) {
					if(file_exists("static/".$page_data['id']."_$lang.htm")) echo implode(file("static/".$page_data['id']."_$lang.htm"));
					else if(file_exists("static/".$page_data['id']."_$deflang.htm")) echo implode(file("static/".$page_data['id']."_$deflang.htm"));
			}
			echo $content;
			if($show_content == 2) {
					if(file_exists("static/".$page_data['id']."_$lang.htm")) echo implode(file("static/".$page_data['id']."_$lang.htm"));
					else if(file_exists("static/".$page_data['id']."_$deflang.htm")) echo implode(file("static/".$page_data['id']."_$deflang.htm"));
			}

			//if(!isset($hskip)) echo "</html>";

		}
		else $error = 2;
				}
} else $error = 3;
if($error == 3) echo "$page 404 Not Found<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"2;URL=/\">";
if($error == 2 or $error == 1) echo "Filesystem error...<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"2;URL=/\">";

//if($page_data['type'] != 2) echo "</html>";
$content = ob_get_clean();
$data = '';
$data = $page_data;
$data['title'] .= " - $site_title";
foreach($data as $k => $v) $data2[$k] = win2utf($v);
$content=iconv("windows-1251", "utf-8", $content);
$data2['content'] = $content;
//prpr($data);


echo json_encode($data2);
?>

Теперь вопрос что откуда и куда должен пропасть...
 
покажи функцию win2utf и что выдает var_dump($data2)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху