responseText正在运行但responseXML为null

时间:2015-06-22 21:31:11

标签: php

我正在尝试使用Ajax打开XML文件。其responseText工作正常但responseXML正在返回null。我检查了语法,语法没有错。我不知道问题是什么。这是我的代码......

我的HTML代码

<div id='albumBox'>
                    <input type='file' multiple name='newsfeedAlbum[]' id='newsfeedAlbum' onchange='uploadNewsfeedImages()' />
</div>
<div id='uploadingImages'>
    <progress id='newsfeedImageProgressBar'></progress>
</div>
<div>
    <input type='button' id='albumButton' value='post' />
</div>

我的JavaScript代码......

function uploadNewsfeedImages()
{
    //alert("loaded");
    var files = document.getElementById("newsfeedAlbum").files;
    var formData = new FormData();
    var unixTimeStamp = Math.floor(((new Date).getTime())/1000);
    formData.append("action","post");
    formData.append("thing","album");
    formData.append("unixTimeStamp",unixTimeStamp);
    formData.append("album_to","news_feed");
    for(var i = 0;i < files.length;i++)
    {
        var file = files[i];
        //alert("file name is "+files.item(i).name);        
        formData.append("albumImages[]",file);
    }
    var xhr = new XMLHttpRequest();
    xhr.open("POST","add_newsfeed.php",true);       
    xhr.onreadystatechange = function()
    {
        if(xhr.readyState == 4)
        {
            //alert(xhr.responseText);
            alert(xhr.responseXML);         
        }
    }
    xhr.upload.onprogress = function(event)
    {
        showProgress(xhr,event);
    }
    xhr.send(formData);
}
function showProgress(xhr,event)
{
    var uploaded = event.loaded/event.total;
    uploaded = Math.floor(uploaded*100);
    //alert(uploaded);
    document.getElementById("newsfeedImageProgressBar").value = uploaded;
}

这是我的php代码......

session_start();
echo '<?xml version="1.0" encoding="UTF-8"?>';
header("Content-type: text/xml");
if(isset($_POST))
{
    echo "<newsfeed>";
    $action = $_REQUEST["action"];
    if($action == "post")
    {
        $thing = $_REQUEST["thing"];
        if($thing == "text")
        {
        }
        elseif($thing == "album")
        {
            $succeded = array();
            $failed = array();
            $targetFolder = "images/";
            $extensions = array("jpeg","jpg","bmp","png","gif");
            foreach($_FILES["albumImages"]["name"] as $key=>$value)
            {
                //echo $key."=>".$value."<br />";
                if($_FILES["albumImages"]["error"][$key] === 0)
                {
                    $extension = strtolower(pathinfo($value,PATHINFO_EXTENSION));
                    if(in_array($extension,$extensions))
                    {
                        $source = $_FILES["albumImages"]["tmp_name"][$key];
                        $destination = $targetFolder.basename($value);
                        if(move_uploaded_file($source,$destination))
                        {
                            $succeded[] = $value;
                        }
                        else
                        {
                             $failed[] = $value;
                        }
                    }
                    else
                    {
                        $failed[] = $value;
                    }
                }
                else
                {
                    $failed[] = $value;
                }
            }           
            if(count($succeded)>0)
            {
                echo "<succeded>";                  
                for($i=0;$i<count($succeded);$i++)
                {
                    echo "<succeded_file>".$succeded[$i]."</succeded_file>"; 
                }
                echo "</succeded>";
            }
            if(count($failed)>0)
            {
                echo "<failed>";
                for($i=0;$i<count($failed);$i++)
                {
                    echo "<failed_file>".$failed[$i]."</failed_file>"; 
                }
                echo "</failed>";
            }           
        }
    }
    echo "</newsfeed>";
}
?>

1 个答案:

答案 0 :(得分:1)

这可能是因为从服务器返回的文件的内容类型不是xml。

尝试在PHP代码中使用header('Content-Type: text/xml');