javascript - Php 不能与 ajax 一起工作

标签 javascript php ajax

html代码

<form  method="post" name="file_upload" enctype="multipart/form-data"  id="file_upload">
    <input type="file"  id="_file" name="_file"> <br>
    <input type="button"  id="button" value="upload"/> <br>
    <progress id="p_bar" value="0" max="100" style="width:300px;"> </progress>
</form>
<p id="status"> </p>
<script src="final.js" > </script> 

js

var sfile = document.getElementById('_file') ;
var btn = document.getElementById('button') ;
var f_upload= document.getElementById('file_upload') ; 
var pbar = document.getElementById('p_bar') ;
var sbar = document.getElementById('status') ;

function upload () {
    if(sfile.files.length==0) {
    alert("files isn't select ") ;                      
    }

    var s_file = sfile.files[0] ;
    var formdata = new FormData () ;
    formdata.append( 'selected file ',s_file) ;

    var ajax = new XMLHttpRequest () ;
    ajax.upload.addEventListener("progress", progress  , false ) ; 


    function progress (event) {
        var percent = (event.loaded / event.total) * 100 ; 
        pbar.value = Math.round(percent) ;
        sbar.innerHTML = Math.round(percent)+"%.........uploaded" ;
    }

    ajax.open("POST", "final.php") ;
    ajax.send(formdata) ;
}


btn.addEventListener("click", upload , false ) ;`

PHP

<?php

$file_name = $_FILES['_file']['name'] ;
$file_temp = $_FILES['_file']['tmp_name'] ;
$file_size = $_FILES['_file']['size'] ;
$file_type = $_FILES['_file']['type'] ;
$file_error = $_FILES['_file']['size'] ;

$file_destination = "upload/".basename($file_name) ;


if( move_uploaded_file($file_temp, $file_destination) ) {
    echo "file uploaded" ;
}
else {
    echo " file is failed to upload " ;
}

在这些中没有在 php 上工作。如果我只把 echo 放在主页上仍然没有输出。另外,如果在 php 中,我们在 html 中遇到了名称标签,而不是为什么在 ajax.like ajax.send(formdata) 中使用发送函数

最佳答案

这里的问题是你不是在寻找 ajax 响应。试试这个:

<script>
    var sfile = document.getElementById('_file');
    var btn = document.getElementById('button');
    var f_upload= document.getElementById('file_upload');
    var pbar = document.getElementById('p_bar');
    var sbar = document.getElementById('status');
    var ajax = null;
    function upload () {
        if(sfile.files.length==0) {
            alert("files isn't select ");
            return;
        }

        var s_file = sfile.files[0];
        var formdata = new FormData();
        formdata.append('_file',s_file);//your key is _file

        ajax = new XMLHttpRequest();
        ajax.upload.addEventListener("progress", progress  , false);
        ajax.open("POST", "final.php");
        ajax.onreadystatechange = OnStateChange;
        ajax.send(formdata);

    }

    btn.addEventListener("click", upload , false);

    function progress (event) {
        var percent = (event.loaded / event.total) * 100;
        pbar.value = Math.round(percent);
        sbar.innerHTML = Math.round(percent)+"%.........uploaded";
    }

    function OnStateChange () {
        if (ajax.readyState == 4 && ajax.status == 200) {
            var resp = ajax.responseText;
            alert(resp);
        }
    }
</script>

关于javascript - Php 不能与 ajax 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33206833/

相关文章:

javascript - 在replaceWith jQuery方法之后父节点为空

php - CodeIgniter 如何知道 cookie 持有有效的 session 数据?

php - mysql select query for multiple ID's that call name 来自同一个用户名表

javascript - 使用 Ajax 的 Django POST

java - 如何使用 getParameterNames() 值

javascript - 文本区域/wysiwyg 上的 Knockout JS 和 iPad 更新问题

javascript - HTML5 <音频>:单击下一首歌曲时停止加载/缓冲

javascript - 使用异步过滤和映射 Promise

php - 如何使用 PHP 将这些相同的变量名称保存到 mySQL 列中

javascript - 在 Ajax 中传递 URL 变量