JQuery AJAX Загрузить форму сериализации - PullRequest
1 голос
/ 28 января 2012

У меня проблемы с загрузкой изображения из HTML-формы. Форма добавляется в div, когда кто-то нажимает на элемент, вот код для этого:

$("#editavatar").click(function(){
    $(".rightdisplay").html('<form class="upload" method="post" enctype="multipart/form-data">');
    $(".rightdisplay").append('<div class="editavatar"></div>');
    $(".rightdisplay .editavatar").append('<div class="boxtitle">edit avatar</div>');
    $(".rightdisplay .editavatar").append('<div class="boxwrapm"><input type="file" name="imageup" id="imageup" value="" /></div>');
    $(".rightdisplay .editavatar").append('<div class="boxwrapm"><input type="submit" name="submit" class="imageupload" value="Send" /></div>');
    $(".rightdisplay .editavatar").append('</form>');
    Cufon.replace('.boxtitle');
});

Форма создана правильно, проблема в том, что когда я пытаюсь сериализовать форму, когда кто-то нажимает кнопку отправки, переменная dataString остается пустой:

$(document).on("click", "input.imageupload", function(event){
    event.preventDefault();
    dataString = $("form.upload").serialize();
    alert(dataString);
    $.ajax({
        type: "POST",
        url: "http://xxx/upload.php",
        data: dataString,
        dataType: "json",
        success: function(json){
            if(json.jresponse==true){
                $(".avatar").css({"background" : "url(http://xxx/images/avatars/"+json.juser+".png) #000000 center center no-repeat;"});
            }
            alert(json.jmessage);
        },
        error: function(xhr, textStatus, errorThrown){
            alert(errorThrown);
        }
    });
    return false;
});

Почему он не сериализуется?

Ответы [ 2 ]

3 голосов
/ 28 января 2012

ajax не может загружать файлы, а jquery не сериализует поля ввода файлов, см. Также http://api.jquery.com/serialize/

0 голосов
/ 05 ноября 2013

Если вы хотите загрузить файлы с данными формы, необходимо указать следующий файл js:

<script src="http://malsup.github.com/jquery.form.js"></script>

И используйте следующий код для любого события:

var options = { 
  url: url,
data : {'username' : username, 'password' :     password ,'repeatpassword' :repeatpassword,'firstname' :firstname,'lastname' :lastname,'email' :email},
success:function(data) { 
    alert(data);    
  } 
}; 

$('#formId').ajaxForm(options);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...