Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用$.ajax()进行输入字段文本和文件上载?_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript 如何使用$.ajax()进行输入字段文本和文件上载?

Javascript 如何使用$.ajax()进行输入字段文本和文件上载?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,这是我的密码 $.ajax({ type: 'post', url: '../lib/upload.php', data: new FormData( $("#niceidentifier") ), processData: f

这是我的密码

                        $.ajax({
                            type: 'post',
                            url: '../lib/upload.php',
                            data: new FormData( $("#niceidentifier") ),
                            processData: false,
                            contentType: false,
                            success: function (response) {
                                if(response == 'success') {
                                    return true;
                                }
                                else {
                                    alert(response);
                                    console.log(response);
                                }
                            }
                        });

HTML表单只是包含了基本的HTML enctype和方法post,但不幸的是没有传递任何数据。如何上传文件并一次性传递输入数据?

在同一个POST请求中传递文件和其他数据(如文本)并不是那么简单。实现这一点的唯一方法是发出多部分/表单数据请求

您可以使用FormData传递文件。和processData,contentType必须设置为false。因为您不打算在客户端处理文件

// Create a formdata object and add the files
var data = new FormData();
$.each(files, function(key, value)
{
        data.append('myFile', value);   //No I18N
});


$.ajax({
    url: '/your-url', 
    type: 'POST',
    data: data,
    cache: false,
    dataType: 'json',   //No I18N
    processData: false, // Don't process the files
    contentType: false, // Set content type to false as jQuery will tell the server its a query string request
    success: function(data, textStatus, jqXHR)
    {
    // do something
    },
    error: function(jqXHR, textStatus, errorThrown)
    {
            // Handle errors here
    }
});
或者,您可以发送包含以下数据的文件:


我使用ajaxForm通过ajax异步上传文件,这比尝试实现自己的文件要容易得多


对于跨浏览器解决方案,我认为最好使用

$("#form_id").ajaxSubmit();

@所以我必须为每个输入字段执行form_data.append?即使它不是一个文件?niceidentifier是表单的id吗?@SebriZouhaier不,这是表单的id,PHP脚本如何获取我的输入类型文本内容?@user3613095我对PHP不太熟悉,但我认为您可以使用$_FILES['myFile']['tmp\u name']访问它。您可以阅读它,我得到了文件,但我没有得到我表单中的20个文本、选择和单选字段。@user3613095您也需要附加这些值。喜欢数据。加上'name',一些值;这不能自动发生吗@克里耶塔?我的表单更复杂,它可以在字段类型之间变化。。。
$("#form_id").ajaxSubmit();