2015-06-22 2 views
0

Я пытаюсь открыть XML-файл с помощью Ajax. Его responseText работает нормально, но responseXML возвращается null. Я проверил синтаксис, нет ничего плохого в синтаксисе. Я не знаю, в чем проблема. Вот мой код ...responseText работает, но responseXML равен

Мой 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

Это, вероятно, потому, что тип содержимого файла, возвращаемого с сервера, не является xml.

Попробуйте использовать header('Content-Type: text/xml'); в вашем PHP-коде.

+0

Я использую его ... –

+1

Попробуйте установить заголовок в самой верхней части файла. – Benten

Смежные вопросы