проблема с .html()

#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'