Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > include => как ответ AJAX`у


Автор: DRUG_ADDICT 24.11.2010, 04:01
Привет всем! Помогите мне твердолобому пожалуйста smile 

есть файл 123.txt:
Код

AJAX:
<?php
echo "Привет мир!"; 
?>
<br />или просто <u>html</u><br /><br />


есть файл ajax.js:
Код

$(document).ready(function(){
   $("a").click(function(){
      var id=$(this).attr('id');
      $.ajax({
         type: "GET",
         data: "hello="+id,
         cache: false,
         url: "index.php",
         dataType: "json",
         beforeSend: function(){
            alert ("Запрос");
         },
         success: function(response){
           alert ("Ответ");
                $("#ajax1").html (response[0]);
                $("#ajax2").html (response[1]);               
         }
      });
      return false;
   });
});


есть файл index.php:
Код

<?php
if ($_GET['hello'] == "world"){
$ajax1 = "123.txt";
$ajax2 = "123.txt";
}

if ($_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest"){
echo json_encode(array($ajax1, $ajax2));
die();
}

?>
<html>
<head>
<title>Привет мир!</title>
<script language="javascript" src="jquery.js"></script>
<script language="javascript" src="ajax.js"></script>
</head>
<body>
<a href="index.php?hello=world" id="world">нажми меня</a>
<br /><br />
AJAX 1:<div id="ajax1"></div>
<br /><br />
AJAX 2:<div id="ajax2"></div>
</body>
</html>


результат:
Код

нажми меня 

AJAX 1:
123.txt


AJAX 2:
123.txt


******************
Задача на самом деле оч проста...
как в <div id="ajax2"></div> (смотри index.php) вывести не имя файла (123.txt) а содержимое файла - естественно так что-бы php в файле отработало... include(); вроде не помогает... хотя хз, наверно нать его правильно применять... блин пять часов уже долблюсь абстенку не помогает =( галава АПУХЛА! smile

пожалуйста при пожалуйста помогите =)

Автор: ksnk 24.11.2010, 10:07
Цитата

...{
$ajax1 = "123.txt";
$ajax2 = "123.txt";
}
if ($_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest"){
echo json_encode(array($ajax1, $ajax2));
}...

Дык а что написано-то? то, что получается, вроде  smile 

Чтобы получить выполненное содержимое файлов нужно их либо eval'нуть, для этого их нужно прочитать . Либо include'нуть/ для этого их нужно окружить оберткой из ob_start - ob_getcontents;
Если в файле написана какая-то фигня и будет ошибка трансляции начнутся всякие интересные приключения  smile 

Автор: DRUG_ADDICT 24.11.2010, 10:28
Цитата

Дык а что написано-то? то, что получается, вроде  smile 

не ну это какбэ имя файла... и его надо открыть и прочитать да. типа транслировать... на пример вот то что я ваше писал как это сделать можно покажите пожалуйста, с оберткой и с чем там ещё =)))

Добавлено через 32 секунды
пожалуйста

Автор: ksnk 24.11.2010, 10:45
Код

$ajax1 = "123.txt";
ob_start();
include($ajax1);
ajax1=ob_get_contents();
ob_end_clean();


что-то вроде такого. 

Автор: DRUG_ADDICT 24.11.2010, 11:10
Цитата(ksnk @ 24.11.2010,  10:45)
Код

$ajax1 = "123.txt";
ob_start();
include($ajax1);
ajax1=ob_get_contents();
ob_end_clean();


что-то вроде такого.

добавляю ob_end_flush(); перед ob_end_clean(); работает... 

если через AJAX то без ob_end_flush(); выводит null, с ob_end_flush(); вообще ответ не приходит =((((
пробовал с массивом отдав переменную $ajax1 

Код

...
echo json_encode(array($ajax1, $ajax2));
...


так и без, просто закомментировав эту строку... 
то есть по сути ob_end_flush(); заменяет echo =))) и AJAX должен получить ответ, ### =(

Добавлено через 20 секунд
UDP: сам ajax.js правлю конечно! смотрю вывод через alert(response);

Добавлено через 2 минуты и 41 секунду
ладно буду пробовать ешё и ешё! если что поправьте или добавьте ч... мж что в голову придет =) там... эх =(

Автор: DRUG_ADDICT 24.11.2010, 22:17
блин ч тока уже не пробовал =((( как сделать то так  smile 

Автор: DRUG_ADDICT 24.11.2010, 22:40
помогло ето

Код

if ($_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest"){

$ajax2 = file_get_contents("http://url.ru/ajax/123.txt");
echo json_encode(array($ajax1, $ajax2));

die();
}

именно http надо прописывать, ибо локально обращаясь к файлу мы бы получали исходной код. а так он интерпретируется апачам... правда как ето с .txt работает я хз, НО РАБОТАЕТ! smile 

Автор: DRUG_ADDICT 25.11.2010, 00:10
странно file_get_contents(); читает не которые файлы... html без проблем читает php код вообщем то тоже нормально, но вот, прекращает исполнять php после условия типа:
Код

html код
....
<?php
if (count($_POST)>

или
Код

php and html код
....
<?php 
$newsindex = 0;
while ((count($news_line)+1) > 

дальше просто текст выводит... smile 

Автор: DRUG_ADDICT 25.11.2010, 00:38
вот этот вариант работает намного лучше

Код

if ($_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest"){

ob_start();
include '123.txt';
$ajax2 = ob_get_clean();

echo json_encode(array($ajax1, $ajax2));

die();
}


СПАСИБО ОГРОМНОЕ ksnk, плюсану! наверно на этом стоит и остановиться...

*пошел курить бамбук*

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)