2017-10-29 3 views
1

問題があります。私はAJAX(XMLHttpRequest)経由でファイルを送信しています。いずれかの方法。 PHP関数がJSONにエンコードされたレスポンス配列を返しています。私はJavaScriptで配列をキャッチすることができますが、私は配列の指定されたキーにアクセスすることはできません。ここで XMLHttpRequestのJSON配列へのアクセス

は、この配列のコンソールログです:

$('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); 
    }; 
}); 
POSTリクエストの後に実行されている

今PHP関数:

/** 
* @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)); 
} 

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

私は私のJavaScriptファイルを持っています

変数のコンソールログresult:変数result.data{"data":"cos","data1":"cos1"}

コンソールログ:undefined

私は実際にいくつかの助けを必要としています。私はすべてを試していた! :(

+0

あなたは(=デコード)文字列を '」解析する必要があります。 'var result = JSON.parse(request.response);' – Jeff

+0

はい、それはあります。答えを投稿してください。それを受け入れる! –

+0

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

答えて

2

あなたが最初にJSONに文字列'{"data":"cos","data1":"cos1"}'を解析(=デコード)する必要があります。

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

詳細についてはthe manualを参照してください