首页 > 解决方案 > 如何使用 AJAX 提交表单数据文本和图像

问题描述

我正在尝试将图像数据从 Ajax 发送到 PHP,我已将表单 enc-type 设置为“multipart/form-data”。

它发送文本,但是,如何将文件发送到 .php 脚本?

这条线,我发送的图像是

employee_picture = $("#employee_picture").val();

我相信我需要将.val()更改为其他内容,但是我没有解决问题的当前知识。

阿贾克斯:

<script>
    $(document).ready(function () {
        $("form").submit(function (event) {
            $("#create_employee").attr("disabled", true);
            event.preventDefault();
            var csrf_token = $("#csrf_token").val();
            var first_name = $("#first_name").val();
            var last_name = $("#last_name").val();
            var email = $("#email").val();
            var phone = $("#phone").val();
            var title = $("#title").val();
            var dob = $("#dob").val();
            var other_information = $("#other_information").val();
            var gender = $("#gender").val();
            var address = $("#address").val();
            var address2 = $("#address2").val();
            var city = $("#city").val();
            var postal_code = $("#postal_code").val();
            var e_first_name = $("#e_first_name").val();
            var e_last_name = $("#e_last_name").val();
            var e_phone = $("#e_phone").val();
            var e_relationship = $("#e_relationship").val();
            var employee_picture = $("#employee_picture").val();
            var create_employee = $("#create_employee").val();
            $(".formMessage").load("/app/business/create_employee.php", 
            {
                csrf_token: csrf_token,
                first_name: first_name,
                last_name: last_name,
                email: email,
                phone: phone,
                title: title,
                dob: dob,
                other_information: other_information,
                gender: gender,
                address: address,
                address2: address2,
                city: city,
                postal_code: postal_code,
                e_first_name: e_first_name,
                e_last_name: e_last_name,
                e_phone: e_phone,
                e_relationship: e_relationship,
                employee_picture: employee_picture,
                create_employee: create_employee
            });
        });
    });
</script>

此外,在 php 脚本中。如何使用 $_POST 或 $_FILES 访问它?谢谢!

标签: phpajax

解决方案


您是正确的,您不想使用val. 您可以使用 FileReader API(假设浏览器支持允许)从文件输入中实际获取文件内容。有关详细信息,请参阅此问题:Get data from file input in JQuery

您可以像现在一样传递该值,它将只是$_POST数组服务器端可访问的表单数据中的字符串。通常,这将是一个 base64 编码值。

如果您进行了普通表单提交(不是通过 AJAX),则需要使用$_FILES数组。

此外,您可能想查看使用$.ajaxor$.post而不是$.load. 我相信$.load当你真的想做一个 POST 时会做一个 GET 请求。


推荐阅读