Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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 I';我使用jquery序列化功能通过ajax提交表单_Javascript_Php_Ajax - Fatal编程技术网

Javascript I';我使用jquery序列化功能通过ajax提交表单

Javascript I';我使用jquery序列化功能通过ajax提交表单,javascript,php,ajax,Javascript,Php,Ajax,但是表单有一个(字段)如何使用此ajax序列化方法将文件传递到表单中。当我打印$\u文件时,不会得到任何输出。在使用ajax时,不能超过$\u文件变量。我可以向你保证。谢谢。Ajax不支持文件上传,您应该改用iframe。 您可以查看更多详细信息通过Ajax文件上传发布不是直接的。首先,使用XHR1无法直接实现 上传主要有两种方式,一种是使用框架,另一种是使用XHR2spec和FormData对象。这是我推荐的方法 最简单的方法是执行两次上载。我将从中借用一些代码,向您展示如何使用jQuery:

但是表单有一个(
字段)如何使用此ajax序列化方法将文件传递到表单中。当我打印
$\u文件时,
不会得到任何输出。

在使用ajax时,不能超过$\u文件变量。我可以向你保证。谢谢。

Ajax不支持文件上传,您应该改用iframe。
您可以查看更多详细信息

通过Ajax文件上传发布不是直接的。首先,使用XHR1无法直接实现

上传主要有两种方式,一种是使用框架,另一种是使用
XHR2
spec和
FormData
对象。这是我推荐的方法

最简单的方法是执行两次上载。我将从中借用一些代码,向您展示如何使用jQuery:

var values = $('#form_field').serialize();
dataS = "val="+values;

$.ajax({
    type: "POST",
    url: URL,
    data: dataS,
    cache: false, 
    dataType: 'json',
    success: function(response) 
    { },
});

我还应该注意到,尽管XHR2已经存在2年了,但浏览器对此的支持有点有限:它包含更多信息和浏览器兼容性图表。

Google-
ajax文件上传
文件不会以正常方式随ajax发布,我会推荐jquery图像上传插件XHR2的FormData API呢?它与所有浏览器都不兼容。他也在使用PHP。如果你的借口是“并非所有浏览器都支持”,你最好回去用HTML1为Mosaic编写代码。目前没有人使用Mosaic。
// Ajax File upload with jQuery and XHR2
// Sean Clark http://square-bracket.com
// xhr2 file upload
    // data is optional
    $.fn.upload = function(remote,data,successFn,progressFn) {
        // if we dont have post data, move it along
        if(typeof data != "object") {
            progressFn = successFn;
            successFn = data;
        }
        return this.each(function() {
            if($(this)[0].files[0]) {
                var formData = new FormData();
                formData.append($(this).attr("name"), $(this)[0].files[0]);

                // if we have post data too
                if(typeof data == "object") {
                    for(var i in data) {
                        formData.append(i,data[i]);
                    }
                }

                // do the ajax request
                $.ajax({
                    url: remote,
                    type: 'POST',
                    xhr: function() {
                        myXhr = $.ajaxSettings.xhr();
                        if(myXhr.upload && progressFn){
                            myXhr.upload.addEventListener('progress',function(prog) {
                                var value = ~~((prog.loaded / prog.total) * 100);

                                // if we passed a progress function
                                if(progressFn && typeof progressFn == "function") {
                                    progressFn(prog,value);

                                // if we passed a progress element
                                } else if (progressFn) {
                                    $(progressFn).val(value);
                                }
                            }, false);
                        }
                        return myXhr;
                    },
                    data: formData,
                    dataType: "json",
                    cache: false,
                    contentType: false,
                    processData: false,
                    complete : function(res) {
                        var json;
                        try {
                            json = JSON.parse(res.responseText);
                        } catch(e) {
                            json = res.responseText;
                        }
                        if(successFn) successFn(json);
                    }
                });
            }
        });
    };