通过jquery ajax

时间:2016-09-05 18:27:07

标签: php jquery ajax

我正在构建一个表单来处理文本输入,多个复选框和4个图像。目前我将使用每个函数处理复选框,以便在通过ajax发送之前将复选框的所有值放在一个数组中。现在的问题是我不能用ajax发送图像。而且我也无法访问图像。

代码:

 $(document).ready(function () {
    //alert("this page works");
    $('#uploadProperty').on('submit',function  (e){
        e.preventDefault();

        var hname    = $('#hname').val();
        var location = $('#location').val();
        var htype    = $('#htype').val();
        var rooms    = $('#rooms').val();
        var price    = $('#price').val();
        var hdetails = $('#hdetails').val();
        var feature  = [];
        $('.feature').each(function() {
            if($(this).is(":checked")){
                feature.push($(this).val());
            }
        });
        // if (feature.length == 0)
        //  alert("Select atleast 1 Feature");
        // else{
        //  feature = feature.toString();
        //  alert(feature);
        // }
        var file1 = $('#file4').val();
        //alert(file1);
        $.ajax({
            url     : 'core/upload.php',
            type    : 'POST',
            data    : new FormData(),
            contentType : false,
            processData : false,
            success : function (ep){
                alert(ep);
            }
        });

    });
});

2 个答案:

答案 0 :(得分:1)

您需要首先通过ajax(例如:http://hayageek.com/docs/jquery-upload-file.php)上传图片,然后为表单字段制作另一个ajax。但是你需要Property和images之间的ID链接。你可以添加一个空记录并记住mysql_insert_id以使用表单字段进行更新并插入图像或更新(取决于你的表结构如何)

答案 1 :(得分:0)

所以,如果我做对了,你想填充FormData对象。因为目前它是空的。 您可以使用追加方法:

    var formData = new FormData();
    var $myField = $('#myField');
    formData.append('myField', $myField.val());

附加档案:

    var $fileField = $('#fileField');
    var myFile = $fileField.get(0).files[0];
    formData.append('myFile', myFile);

要附加multiplie文件,您应该正确设置名称:

    formData.append('myFile[]', myFileFirst);
    formData.append('myFile[]', myFileSecond);

在此处查看:Uploading multiple files using formData()

此外,您可以通过构造函数获取整个表单数据:

    var form = $('form').get(0);
    var formData = new FormData(form);