2016-04-04 2 views
1

Привет, ребята, у меня есть эта проблема, как я могу изменить URL-адрес для запроса ajax динамически с помощью кнопки onclick, что я хочу сделать, это изменить «webdav» в URL-адресе ajax на данные [0 ] [J] .name извлекаться в яваскрипте кодаКак изменить запрос 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

Вы можете назначить '{{путь ('user_files', {'oc': 'webdav'})}} к переменной, а затем на основе вашего логического обновления, которая динамически использует JS. – takeit

ответ

0

Прежде всего я рекомендую Вам использовать FOSJsRoutingBundle. Вы можете отделить 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 каждый раз другой вариант.

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