使用FormData ajax()的几个输入jQuery文件上传失败

时间:2014-02-12 12:41:45

标签: php jquery ajax json

修改的 我试图通过jQuery / ajax()发送几个输入值,其中包含一个文件,而ajax()似乎并不同时支持这两个输入值。我发现FormData可以解决问题。 Using jQuery ajax to upload file and form data with formData() http://www.thefourtheye.in/2013/10/file-upload-with-jquery-and-ajax.html

更新 我不再有任何错误,但文件未正确上传到MySQL DB / LongBlob columb中。它似乎现在在PHP文件中正确接收。

HTML

    <input type=hidden name=catselid id=catselid value=".$id.">
    <input name=city id=city>
    <input name=country id=country>
    <input type=file name=picture id=picture >
    <input name=update value=update type=submit class=update id=update  />

的javascript

    $(".update").click(function(){

        $.ajax({
            url: 'catsel_change.php',
            type: 'POST',
            contentType:false,
            processData: false,
            data: function(){
                var data = new FormData();
                data.append('picture',$('#picture').get(0).files[0]);
                data.append('city' , $('#cityname').val());
                data.append('country', $('#country').val());
                data.append('id', $('#catselid').val());
                return data;
            }(),
                success: function(result) {
                alert(result);
                },
            error: function(xhr, result, errorThrown){
                alert('Request failed.');
            }
            });

    });

PHP

if(is_uploaded_file($_FILES['picture']['tmp_name'])){
    $picture =addslashes (file_get_contents($_FILES['picture']['tmp_name']));
...
}

仅供参考,我使用的是jQuery 1.9.1 欢迎提出意见/建议 问候

2 个答案:

答案 0 :(得分:0)

好的,我终于明白了。只是一个愚蠢的凌乱“,”留在PHP文件中。现在一切正常。 谢谢你的帮助!

答案 1 :(得分:-2)

无法通过真正的ajax调用将文件发送到服务器。我建议您将表单放在隐藏的iframe中并从父级提交。