javascript - 如何使用 JavaScript 和 Ajax 发送文件和输入字段来发送 php 脚本

标签 javascript php ajax

请有人告诉我如何使用 javascript 执行此操作。因为我使用 javascript 和 ajax 加载将进行上传的页面,然后使用 javascript 和 ajax 将表单提交到 php 脚本

function AddMultipleContact(){
    var xmlhttp;
  if(window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
  } else { // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
var url = "url.php";
var group = document.getElementById("select-input").value;
var file = document.getElementById('file-name').files;
var variables = "select-input="+group+"&file-name="+file;

xmlhttp.open("POST", url, true);
// Set content type header information for sending url encoded variables in the request
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

// Access the onreadystatechange event for the XMLHttpRequest object
xmlhttp.onreadystatechange = function() {
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var data = xmlhttp.responseText;
        document.getElementById("flash-message").innerHTML = data;
    }
}
xmlhttp.send(variables); // Actually execute the request

最佳答案

文件通常是数据,比如二进制或任何其他东西,它不能只是作为查询字符串发送并连接成字符串。

要使用 ajax 上传文件,您必须使用 FormData object ,只有 IE10 及更高版本支持,对于较旧的浏览器,ajax 上传是不可能的,必须使用 iframe 等解决方法

function AddMultipleContact() {
    var xmlhttp;
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    var url      = "url.php";
    var group    = document.getElementById("select-input").value;
    var files    = document.getElementById('file-name').files;
    var formData = new FormData();

    for (var i = 0; i < files.length; i++) {
        var file = files[i];

        formData.append('files[]', file, file.name);
    }    

    formData.append('select_input', group);

    xmlhttp.open("POST", url, true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var data = xmlhttp.responseText;
            document.getElementById("flash-message").innerHTML = data;
        }
    }
    xmlhttp.send(formData);
}

关于javascript - 如何使用 JavaScript 和 Ajax 发送文件和输入字段来发送 php 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30480219/

相关文章:

php - 来自 php 的 Mongodb 查询 - 无法使其正常工作

c# - 如何为 updatePanel 外部的文本框赋值

c# - Nancy 模型绑定(bind)在 Chrome、IE 中不起作用

javascript - 响应式导航 - flexbox 下拉菜单导致溢出

javascript - PHP MySQL 使用 jQuery 使用包含换行符的文本填充 Textarea

php - 从php中的字符串中提取值

jquery - 如何正确处理httpStatuscode

php - 对 PHP 的 Ajax 调用没有返回任何内容

javascript - 如何将文件从 PhoneGap/webapp ftp 到服务器?

Javascript onchange() 在 Chrome 和 IE 中不起作用