2016-08-25 3 views
0

У меня есть запрос Ajax, который изменяет контент на основе выпадающего списка. Запрос работает так, как должен, но я не могу заставить его обновлять URL с помощью select. Если я выберу элемент, содержимое отобразится так, как должно, но не изменится URL. Если я вручную укажу URL-адрес, он покажет контент как следует.JQuery - URL-адрес не обновляется при изменении поля выбора

Я пропустил что-то, чтобы изменить его?

$(document).ready(function(){ 
if($('.ID :selected').val()) {$('.ID').show();} else {$('.ID').hide();} ; 

$('.Name').change(function(e){ 
e.preventDefault();  
    var myval = $('.Name:selected').val(); 
    var baseurl = window.location.origin+window.location.pathname+"?ID="+myval; 
    $.ajax(baseurl) 
     .done(function (response) { 
      $('body').html(response); 
      $('.ID').show(); 
     }) 
     .fail (function (xhr) { 
      alert('Error: ' + xhr.responseText); 
      $('.ID').hide(); 
    });  
});  
}); 

EDIT - Я использую Silverstripe CMS. У меня есть запрос SQL, который заполнит из БД

$form = Form::create(
    $this,'MySearchForm', 
    FieldList::create(
    DropdownField::create('ID',' ') 
     ->setSource(TableName::get()->map('ID','MainName')) 
     ->setemptyString('--Select Level --') 
     ->addExtraClass('Name') 
     ), 

    FieldList::create()); 

    $form->setFormMethod('GET') 
    ->setFormAction($this->Link()."#programme") 
    ->disableSecurityToken() 
    ->loadDataFrom($this->request->getVars()); 

    if($request->isAjax()) { 
     $this->renderWith('Search'); 
    } 
+1

Вы можете показать свой html? –

+0

Добавлено в PHP - я использую среду Silverstripe. – Craig

ответ

0

проблема в вашем коде, при получении синтаксиса значения, я считаю, что нет необходимости использовать :selected с val(). Вы можете использовать $('.ID').val() вместо $('.ID :selected').val()

Кроме того, чтобы использовать эту :selected вы должны следовать этому синтаксису $('.ID option:selected')

Надежда Это может быть полезно для вас !!

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