JSON отправить отправить форму - PullRequest
0 голосов
/ 25 марта 2011

Далее можно отправить форму через запрос json, в котором есть файл и текстовое поле. Я использую django на стороне сервера

<script>
var uploadform=$("#upload_form").val();
function send_data(paramarr,url) {
    $.post(url, paramarr,
    function callbackHandler(ret) {

    },
    "json"
    );
}
</script>

<form id="upload_form">
    <input type="text" name="field_name" >Name:
    <input type="file" name="field_name" >Upload:
</form> 

Ответы [ 4 ]

0 голосов
/ 25 марта 2011

В дополнение к заметке jm_toball о невозможности загрузки файлов с помощью post () или ajax (), вы можете попробовать использовать плагин jQuery forms. Я не использовал плагин для загрузки файлов, но в их FAQ говорится, что их плагин поддерживает его:

http://jquery.malsup.com/form/#faq

0 голосов
/ 25 марта 2011

Вы не сможете загружать файлы с помощью post () или ajax ().Вам придется либо использовать iframe, либо использовать вспомогательную библиотеку, которая в основном просто сделает это автоматически.Ищите на сайте jQuery плагинов достаточное количество альтернатив.

0 голосов
/ 25 марта 2011

вы можете создать форму динамически, выбирая разметку формы с сервера. Тем не менее, несколько вопросов

  1. Если извлеченные данные содержат JavaScript, они не будут оцениваться (т. Е. Браузер игнорирует их. Вы должны вручную проверить их)
  2. Когда вы отправляете загруженную форму, она отправляет всю страницу (вы должны использовать Ajax для отправки только этой формы и сохранить оставшуюся часть страницы как есть.)
  3. Если форма содержит теги файлов, она не будет работать (вам нужно обойти это, создав скрытый фрейм, загрузив в него элементы формы, отправив и удалив скрытую форму)
0 голосов
/ 25 марта 2011

Вы изучили функцию jquery serialize()?Это позволяет вам принять форму, сериализовать ее в строку и передать в качестве параметра.

http://api.jquery.com/serialize/

var str = $("#upload_form").serialize();
$.post("test.php", str, function (ret){ 

},"json");

РЕДАКТИРОВАТЬ:

Я, правда, не заметил, что это была загрузка файла.Загрузка файлов не может быть выполнена таким способом.Проверить Загрузить

...