Кроссдоменный ajax запрос и ответ в json
Есть сайт на хостинге без 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);//записали строку
?>
$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).');';
?>
$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]
Пожалуйста помогите. Большую часть пути уже проделал сам.