【问题标题】:Sending multiple data through jquery ajax通过jquery ajax发送多个数据
【发布时间】:2016-09-05 18:27:06
【问题描述】:

我正在构建一个表单来处理文本输入、多个复选框和 4 个图像。目前我将使用 each 函数处理复选框,以便在通过 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);
            }
        });

    });
});

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

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

    【讨论】:

    • 也喜欢这个答案,但是使用双 ajax 请求不会让事情变得复杂吗?只是问?
    【解决方案2】:

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

        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);
    

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

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

    在这里查看:Uploading multiple files using formData()

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

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

    【讨论】:

    • 感谢您的回答,但如果我接受您的任何建议,我如何在 php 中获取每个唯一字段,以便将它们插入到数据库表中的特定字段中?
    • 和往常一样。使用 $_POST 和 $_FILES 超全局变量。下面是最后的示例#3,如何使用 foreach php.net/manual/en/features.file-upload.post-method.php处理多重文件上传
    • 它终于工作了...谢谢大家..我现在可以通过附加方法发送我需要的所有数据。
    猜你喜欢
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多