2015-08-26 5 views
0

У меня есть список опций, на мой взгляд, что получает его параметры установлены через AJAX в $(document).ready() После этого АЯКС вызова, я хочу, чтобы установить значение этого поля в использовании .val()

Мой Аякса вызов выполняется с помощью следующей функции:

function getOrganisations(date, id, blank) { 
    $.get(myBaseUrl + "/placements/getTempsOrgsForTimesheets/" + blank + "?date=" + date + "&id=" + id, 
     function (data, status) { 
      $(".organisation").html(data); 
     }); 
} 

Эта функция отлично работает и заполнит список правильно

Если после этого я пытаюсь установить значение этого списка, не работа с использованием

$("#org_" + rel).val($("#org_" + rel).attr("aVal")); 

Если я нахожу это в консоли в своем браузере, он отлично работает и обновляет поле.

Любые идеи?

<div class="input select"><select name="timeData[organisation_id][thu]" class="organisation table-data table-row-3" aval="38" rel="3" id="org_3"><option value="0"> </option><option value="38">DFS Cork</option></select></div> 

Я добавил

console.log(document.getElementById("org_" + rel)); 

, прежде чем я попробовать и установить значение и получил следующий

<select name="timeData[organisation_id][thu]" class="organisation table-data table-row-3" aval="38" rel="3" id="org_3"><option value="0"> </option><option value="38">DFS Cork</option></select> 
+2

Показать свой HTML. –

+0

Если вы не видите ничего в консоли ошибок, вероятно, элемент, который вы пытаетесь обернуть, не существует. пытаются отлаживать с помощью 'console.log (document.getElementById ("org_" + отн));' т.е. 'console.log (document.getElementById ("org_" + отн)); $ ("# org_" + rel) .val ($ ("# org_" + rel) .attr ("aVal")); ' и покажите мне, что вы видите. – Kadugedeboy

+0

Я обновил свой вопрос –

ответ

4

Я представляю это асинхронный вопрос.

Он работает в консоли вашего браузера, потому что к тому времени вызов AJAX завершится.

Убедитесь, что вы добавляете строку в функцию обратного вызова.

function (data, status) { 
    $('#place_' + rel).html(data); 
    $("#org_" + rel).val($("#org_" + rel).attr("aVal")); 
}); 

Если вы не хотите, чтобы добавить логику непосредственно в getOrganisations функции можно включать callback параметр вместо:

function getOrganisations(date, id, blank, callback) { 
    $.get(myBaseUrl + "/placements/getTempsOrgsForTimesheets/" + blank + "?date=" + date + "&id=" + id, 
     function (data, status) { 
      $(".organisation").html(data); 
      if (typeof callback === 'function'){ 
       callback(); 
      } 
     }); 
} 

Затем использовать его как:

getOrganisations('date_value', 'id_value', 'blank_value', function(){ 
    $("#org_" + rel).val($("#org_" + rel).attr("aVal")); 
}); 
+0

абсолютно !!! Я тоже собирался сказать то же самое. – Jai

+2

Вы так быстр –

+0

Запрос Ajax всегда выполняется на странице, но это обновление установки значения является условным, поэтому я не хочу, чтобы он был включен в обратный вызов ajax. Могу ли я дождаться завершения всех запросов ajax? –