2017-10-29 14 views
1

Ich habe ein Problem. Ich sende Datei über AJAX (XMLHttpRequest). Sowieso. Die PHP-Funktion gibt ein Antwort-Array zurück, das in JSON codiert ist. Ich kann Array in JavaScript fangen, aber ich kann nicht auf den angegebenen Schlüssel im Array zugreifen. HierZugriff Antwort JSON-Array von XMLHttpRequest

ist das Konsolenprotokoll dieses Arrays:

{"data":"cos","data1":"cos1"}

Ich habe meine JavaScript-Datei:

$('input[name=zdjecie]').on("change",function() { 
    var inputfile = document.querySelector('#file'); 
    var file = inputfile.files[0]; 

    $('button[type=submit]').addClass('disabled'); 

    var formData = new FormData(); 
    var request = new XMLHttpRequest(); 

    request.upload.addEventListener('progress', function(e){ 
     var pro = Math.round(e.loaded/e.total * 100); 
     if(pro == 100) { 
      $('#upload_progress').css({'width':pro+'%', background:'#00A65A'});   
      $('button[type=submit]').removeClass('disabled');     
     } 
     else { 
      $('#upload_progress').css({'width':pro+'%', background:'#3C8DBC'}); 
     } 
    }, false);   

    formData.append('file', file); 
    request.open('post', '/admin/ajax/upload-admin-photo'); 
    request.send(formData); 
    request.onloadend = function() { 
     var result = request.response;     
     console.log(result.data); 
    }; 
}); 

Jetzt PHP-Funktion, die nach dem POST-Anfrage ausführt:

/** 
* @Route("/admin/ajax/upload-admin-photo") 
*/ 
public function ajaxUploadAdminPhotoAction(Request $request) 
{ 
    $data = $_FILES; 

    $response = array("data" => 'cos', 'data1' => 'cos1'); 
    return new Response(json_encode($response)); 
} 

Konsolenprotokoll der Variablen result: {"data":"cos","data1":"cos1"}

Console Protokoll der Variable result.data: undefined

Ich brauche wirklich Hilfe. Ich habe alles versucht! :(

+0

Sie analysieren müssen (= decode) die Zeichenfolge '‘. {"data": "cos", "data1": "cos1"} ''zu einem json zuerst: ' var result = JSON.parse (request.response); ' – Jeff

+0

Ja, das war's, Post antworten und ich werde es tun akzeptieren Sie es! –

+0

verwandt: https://stackoverflow.com/questions/45015/safely-turning-a-json-string-into-an-object – Jeff

Antwort

2

Sie müssen analysieren (= decode) die Zeichenfolge '{"data":"cos","data1":"cos1"}' zu einem json zuerst:

var result = JSON.parse(request.response); 
// now you can access it's params: 
console.log(result.data); 

siehe the manual für weitere Informationen