Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Кроссдоменный ajax запрос и ответ в json

68K
12 февраля 2011 года
turlir
1 / / 12.02.2011
Здравствуйте! Знаю, что тема заявленная в заголовке довольно избитая, но у меня, как у новичка, все же возникли траблы.
Есть сайт на хостинге без php. На этот сайт требуется каждый день выкладывать различные файлы. Делать это должен человек. ни кои образом не связанный с html и css и вообще компьютерами.
Было решено сделать так - завести еще один бесплатный хостинг с php и форму загрузки файлов. Форма состоит из 2 частей - собственно выбор файла и описания к нему. Файл грузится в папку на сервере, а описан дописывается в заранее созданный файл на этом же сервере, в формате
<p><a href='ссылка до файла'>описание файла </a></p>.
Это все сделалось на удивление легко (в php вообще ноль, раньше имел дело только с html и css). А вот загрузить конечный документ в страничку исходного сайта я не смог.
Погуглив, пришел к решения, что нужно использовать библиотеку JQuery с ее ajax api, а данные передавать в формате json. Последовало 2 дня мучений.
Наконец вроде бы все работает. При заходе на страничку исходного сайта без php в div грузится сгенерированный файл с другого доменного имени.
Файл в формате html кодировке utf-8. Но вот если кликнуть по ссылке, ведущею на один из загруженных файлов, сервер говорит 403 Forbidden. А если скопировать из ссылки только атрибут href (то есть url файла) и открыть его через браузер, то он скачивается нормально!
Есть подозрение на мою кривую реализация json. Ниже прикладываю исходные коды скриптов


Код загрузки файлов на сервер и создания мтранички со ссылками на эти файлы

Код:
<?php

$name = $_FILES['uploadfile']['name']; //получили имя файла
    $path_info = pathinfo($name);
   $s = $path_info['extension']; //расширение по имени


$handle = opendir('upload');
while (false !== ($file = readdir($handle))) {
       
        if ($file != "." && $file != "..") {
         $k = $k + 1; //количество файлов
            };
      }
$k = $k + 1; //увеличили счетчик


rename ($_FILES['uploadfile']['tmp_name'] , "./upload/raspisanie_$k.$s");//переместили в upload

chmod("./upload/raspisanie_$k.$s", 0777); //даже если этого не будет. все равно ситуация повторяется - 403


$z= $_POST['text']; //получили введенный текст
$q="<a href='http://iljaosincev.aiq.ru/form/upload/raspisanie_$k.$s'>$z</a>";//строка

$fp = fopen("text.html" , "r+");//открыли файл
$g = fwrite($fp , $q);//записали строку

?>


Скрипт, для отдачи файла со ссылками клиенту
 
Код:
<?php

$arr = array ("qwer"=>file_get_contents("text.html"));

//В файле text.html хранятся ссылка на загруженный файлы

echo $_GET['callback'].'('.json_encode ($arr).');';

?>


Код запросы файла со ссылками (JQuery)
[HTML]<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.min.js"></script>
<script type="text/javascript">
$(document).ready (function () {
$.getJSON("http://iljaosincev.aiq.ru/form/json.php?callback=?", function(json){
$("#result").html(json.qwer);
});

});
</script>[/HTML]

Пожалуйста помогите. Большую часть пути уже проделал сам.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог