Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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请求将字符串和文件一起发送到php文件?_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 如何通过ajax请求将字符串和文件一起发送到php文件?

Javascript 如何通过ajax请求将字符串和文件一起发送到php文件?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我得到了一个php文件,它将文件保存到服务器上的一个名为upload的文件夹中。它通过ajax请求接收文件。到目前为止,一切正常。下一个要求是随文件发送一个字符串,以指定上传文件夹和子文件夹,如“Course/Math”,如何实现 JS $( document ).ready(function() { $('#Upload').click(function(){ var formData = new FormData($('form')[0]); $.ajax({

我得到了一个php文件,它将文件保存到服务器上的一个名为upload的文件夹中。它通过ajax请求接收文件。到目前为止,一切正常。下一个要求是随文件发送一个字符串,以指定上传文件夹和子文件夹,如“Course/Math”,如何实现

JS

$( document ).ready(function() {
$('#Upload').click(function(){
    var formData = new FormData($('form')[0]);
    $.ajax({
        url: 'uploadFile.php',  
        type: 'POST',
        xhr: function() {  
            var myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ 
                myXhr.upload.addEventListener('progress',progressHandling, false);
            }
            return myXhr;
        },
        success: completeHandler,
        data: formData,
        cache: false,
        contentType: false,
        processData: false
    });
});

var progressHandling = function(e){
    if(e.lengthComputable){
        var percent = Math.round((e.loaded / e.total) * 100);
        $('#uploadprogress').css('width', percent+'%');
    }
}

var completeHandler = function(data){
    $('#message').text(data);
    $('#uploadprogress').css('width', '0%');
    $('#file').val('');
};
});     
PHP

<?php
if ($_FILES["file"]["error"] > 0) {

} else {
  move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
  echo true;
}
?>

使用在ajax调用中发送表单数据的示例

var formData = $('#myform').serialize;
    $.ajax({
        url: 'uploadFile.php',  
        type: 'POST',
        xhr: function() {  
            var myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ 
                myXhr.upload.addEventListener('progress',progressHandling, false);
            }
            return myXhr;
        },
        success: completeHandler,
        data: formData,
        cache: false,
        contentType: false,
        processData: false
    });
如果要添加字符串,只需使用以下命令:

var value = 'test';
var formData = $('#myform').serialize+"&newstring="+value;
更新 无法通过ajax上传文件。 您可以上传文件,无需使用或插件刷新页面

详情请参阅

此外,请在此处提交一些详细说明:


您可以使用HTML5上传元素

$("#FileUpload").change(function (e) {
 var uploadFile = e.target.files;
 if (uploadFile.length > 0) {
      if (window.FormData !== undefined) {
           var data = new FormData();
           for (var x = 0; x < uploadFile.length; x++) {
                data.append("file" + x, uploadFile[x]);
           }
           data.append("ELEMENTCLASSNAME", $("#ELEMENTID").val());
           $.ajax({
                type: "POST",
                url: 'URL',
                contentType: false,
                processData: false,
                data: data,
                success: function (result) {
                     alert(result);
                },
                failure: function (result) {
                     alert(result);
                },
                error: function (xhr, status, p3, p4) {
                     var err = "Error " + " " + status + " " + p3 + " " + p4;
                     if (xhr.responseText && xhr.responseText[0] == "{")
                          err = JSON.parse(xhr.responseText).Message;
                     console.log(err);
                }
           });
      } else {
           alert("This browser doesn't support HTML5 file uploads!");
      }
 }});

我如何在php中接收这些信息$_文件[]在这里不起作用,对吗?
              var versionName = Request["ELEMENTCLASSNAME"];