2016-02-21 5 views
1

У меня есть страница с некоторыми ссылками, которые я создал, которая вызывает веб-сервис.php create friendly url

Это выдержка из функции Jquery:

$.ajax({ 
    type: 'GET', 
    dataType: 'json', 
    url: 'json.php', 

    success: function (response) { 
     data = response.obj; 
     var errorCode = response.errorCode; 
     if (errorCode === 200) { 
      $.each(data, function (key, value) { 
       l_id_nation = value.id; 

       var name = value.name; 
       var continente = name.val; 

       $('#sidemenu').append('<li><a class="id_continent" href="javascript:void(0)">' + continente + '</a></li>'); 

      }); 

      $('.id_continent').click(function() { 
       var id_continent = $(this).html(); 
      }); 
     } 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     alert(xhr.status); 
     alert(thrownError); 
    } 
}); 

По щелчку, открываю страницу, которая показывает некоторую информацию. URL-адрес страницы является /trip.php?id_trip=1234&continet=oceania

Я хотел бы иметь URL, как /trip/123/oceania

Я подумываю о создании файла маршрута, но я не понимаю, как создать этот новый URL-адрес динамически.

+0

на основе AJAX функции, казалось бы, не зависит от желаемой структуры URL - или the' «URL страницы» ', что вы обратитесь к HREF звена можно создавать в AJAX - извините, это бит неясен – RamRaider

+0

Вам нужно обработать сгенерированный URL-адрес в своем сервисе api перед ответом клиенту. Таким образом, ваш URL-адрес синхронизируется с клиентами и сервером. И вы только управляете всем на своем сервере – Kelvin

+0

Вы должны вернуть дружественный URL-адрес в свой json.php и использовать его в приложении вашего javascript-клиента. – Kelvin

ответ

1

Если я правильно интерпретировал (?), Вы хотите преобразовать URL-адреса, которые вы собираете, из вызова «webservice» и конвертировать их в дружественные ссылки на SEO?

Ниже приведен не jQuery, но, кажется, анализируются данные и возвращаются в нужном вам формате.

if(typeof('getPairs')!='function'){ 
    function getPairs(d,z) { 
     var a = new Object(); 
     var pr = d.split(z); 
     for(var i=0;i<pr.length;i++) { 
       var p = pr[i].indexOf('='); 
       if (p == -1) continue; 
       var n = pr[i].substring(0,p); 
       var v = pr[i].substring(p+1); 
       a[n] = unescape(v); 
     } 
     return a; 
    } 
} 
if(typeof('prepareurl')!='function'){ 
    function prepareurl(u){ 
     var p=u.split('?')[0].split('.')[0]; 
     var q=u.split('?')[1]; 
     var t=[p]; 
     var o=getPairs(q, '&'); 
     for(k in o)t.push(o[k]); 
     return t.join('/'); 
    } 
} 

alert(prepareurl('/trip.php?id_trip=1234&continent=oceania')); 

will return `/trip/1234/oceania` 
0

Я не уверен, насколько это уместно для вашей установки, но я бы предложил использовать отличный микрокарт, Slim, который не только помог бы вашим динамическим маршрутам, но и помог бы вам управлять своими веб-сервисами с гораздо большей легкостью , Настройка Тонкий довольно проста, читать документы здесь: http://www.slimframework.com/

Использование Слим вы можете сделать что-то вроде этого, URL, который вы направляете на, /trip.php?id_trip=1234 & continet = океания могут быть заданы в маршруте, как это,

$app->get('/trip/{trip_id}/{continent}', function($request, $response, $args){ 
    $trip_d = $args['trip_id']; 
    $continent = $args['continent'] 
    //Do something 
}); 

Простой, как любой запрос GET соответствующий вышеуказанный маршрут ударит этот контроллер, и вы можете сделать свой материал в способе, кроме того Слим также имеет встроенную поддержку для системы шаблонного Twig который является отличным ресурсом для управления вашими представлениями.

Если вы хотите, чтобы настройки динамических маршруты без каких-либо рамок, вы должны будете использовать правила перезаписи в файле .htaccess, вы можете найти полезную информацию здесь: http://code.tutsplus.com/tutorials/using-htaccess-files-for-pretty-urls--net-6049 Я предложил бы использовать микрокаркас вместо Переизобретая Надеюсь, это поможет.