#php #javascript #jquery #html
#php #javascript #jquery #HTML
Вопрос:
я использую этот плагин, но все работает хорошо, за исключением одной вещи. В примере разработчика в финале загрузки показано 3 информации о файле, я хочу сделать что-то подобное.
<script type="text/javascript">
$(function() {
$('#userfile').change(function() {
$(this).upload('thumb.php', function(res) {
$(res).insertAfter(this);
}, 'html');
});
});
</script>
</head>
<body>
<input type="file" name="userfile" id="userfile">
<br />
На данный момент загружено только изображение, и ни одно сообщение не отображается.
Вопрос в том, что в моем php-файле я тестирую простое echo, которое не отображается в .html().
это пример разработки
if (move_uploaded_file($_FILES['yourkey']['tmp_name'], '/path/to/save/' . $filename)) {
$data = array('filename' => $filename);
} else {
$data = array('error' => 'Failed to save');
}
header('Content-type: text/html');
echo json_encode($data);
в моем случае я просто тестирую с echo "success";
что я делаю не так?
PS: потрясающий плагин
Комментарии:
1. Попробуйте
alert(res)
вupload
событии — каков результат?2. я уже тестировал alert (), но ничего не происходит. просто загрузите фотографию и остановите загрузку страницы
3. нет, консоль firebug чистая
Ответ №1:
Вот несколько причин, по которым ваше приложение не работает:
$(this).upload('thumb.php', function(res) {$(res).insertAfter(this);}, 'html');
в этом случае upload отправляет функции строковый элемент, который вы пытаетесь преобразовать в DOMNode, поэтому результатом res
должна быть некоторая html-структура, подобная
<li>some text</li>
ваш php-код возвращает строку JSON, которая обрабатывается загрузчиком как простая строка
если вы планируете использовать ответ в формате JSON, измените параметр lasta $(this).upload();
с 'html'
на 'json'