2016-04-04 12 views
1

こんにちは、私はこの問題を抱えています。どのようにajaxリクエストのURLをonclickボタンで動的に変更できますか?ajax url from data [0 ] [j]はjavascriptのコードのすべてのどのようにajax urlリクエストを動的に変更するのですか?

$(document).ready(function() { 

    $.ajax({ 
    type: "POST", 
    dataType: 'json', 
    url: "{{ path('user_files',{'oc': 'webdav'}) }}", 
    data: { 
     restUrl : "/external-api-url/", 
     method: 'POST', 
     params: { 
      action: "getFiles" 
     } 
    }, 
    success: function(data, textStatus, jqXHR) { 
       /*console.info(data[1][0]);*/ 
       var tabl1 = $('#datatable').children(); 
       var tmp = "{{ path('user_files',{'oc':'chaine'}) }}"; 
        for(var j=1;j<data[0].length;j++){ 


        tabl1.append("<tr><div><td></td><a><td id='aa"+j+"' onClick='document.location.href=\""+tmp.replace('chaine', data[0][j].name)+"\"' style=\"cursor:pointer;\">"+data[0][j].name+"</td></a><td>"+data[0][j].size+ 
         "</td><td>"+data[0][j].lastmodified+"</td><td></td></div></tr>"); 
        } 
        for(var j=0;j<data[1].length;j++){ 

        tabl1.append("<tr><td></td><a><td>"+data[1][j].name+"</td></a><td>"+data[1][j].contentlenght+ 
         "</td><td>"+data[1][j].lastmodified+"</td><td></td></tr>"); 
        } 
        var a=document.getElementById('aa1'); 

       //alert(a.innerText) 

       } 

}); 

}); 
+0

あなたは変数に '{{path( 'user_files'、{'oc': '' webdav '})}}'を割り当てて、その変数をJSを使って動的に更新することができます。 – takeit

答えて

0

まずで取得し.nameの私は、あなたがFOSJsRoutingBundleを使用することをお勧めします。 twigテンプレートからJSを切り離すことができます。

次に、たとえば、使用する必要のあるすべてのルータに「URLジェネレータ」を作成できます。私の場合は

function ajaxJsonUrlGenerator(commandName) { 
    return function(options) { 
     options = JSON.stringify(options); 
     return Routing.generate(locale+'__RG__vplanning_ajax_json', { 'command': commandName, 'options': options}); 
    }; 
} 

私は、ルーティングおよび直接のAjax機能を通してそれを記述するために多くの必要はありませんを介してすべてのオプションを説明しますが、あなたのケースでは、あなたがこのようなものを使用することができます

var youroption = 'webdav'; 
function getUrl(youroption) { 
    return Routing.generate('user_files',{'oc': youroption}); 
} 
function createPost(url) { 
    return $.post(
      url, 
      { 
      restUrl : "/external-api-url/", 
      method: 'POST', 
      params: { 
        action: "getFiles" 
        } 
      }, 
      'json' 
    ) 
} 
$("#yourSubmitButton").on('click', function() { 
     var mypost = createPost(getUrl(youroption)); 
     mypost.done(function(data){ 
     ....yourcode...; 
     ...yourcode...; 
     youroption = data[0][j].name; 
     }) 
} 

データ[0を] [j] .nameは正しいオプション名です。したがって、のyouroptionに別のオプションを渡すことができます。

関連する問題