2015-11-13 116 views
0

我有一個選擇欄,#parentCatSelect其值可通過功能acLoadParentCategories通過AJAX/PHP獲取生成的頁面加載後。加載通過AJAX選擇選項,然後設置一個值

功能需要使用兩個獨立的方法,首先創建一個新的部分(其中正常工作),其次是更新的一部分。當用戶更新零件時,應通過AJAX從數據庫中的值中加載所有表單值(包括這一個)。除此之外,所有值均正確加載。

我不能爲我的生命弄清楚爲什麼我的價值不是選擇值負載後獲得的設定。

我的功能通過AJAX來加載類:

var acLoadParentCategories = function(callback) { 

    var _data = { 
     action: 'ac_ajax_load_parent_cats' 
    }; 

    jQuery.post(
     the_ajax_script.ajaxurl, 
     _data, 
     function(response) { 

      var results = JSON.parse(response.results); 
      var html = ''; 

      for (var i = 0; i < results.length; i++) { 
       html += '<option value="' + results[i].cat_id + '">' + results[i].cat_name + '</option>'; 
      } 

      jQuery('#parentCatSelect').append(html); 
     } 
    ); 

    callback(); 
    return; 
}; 

我所在的地方加載它,然後正確設置VAL

acLoadParentCategories(function() { 
    console.log('happening'); 
    jQuery('#parentCatSelect option[value="1"]').attr('selected', true); 
}); 

console.log聲明被正確調用,但沒有不管我嘗試什麼,在選擇框生成後我都無法正確設置值。我究竟做錯了什麼?

(爲清楚起見,我知道我手動分配的「1」的值,而不是動態加載的ID。我這樣做只是爲了看看它是否會工作,仍然沒有骰子。)

+0

如果你把'的jQuery( '#parentCatSelect選項[值= 「1」]')ATTR( '選擇',真);''以上的回調()'它工作正常嗎? –

+0

對不起把'回調();''的jQuery(「#parentCatSelect」)後追加(HTML);' –

+0

因爲AJAX完成之前,你的回調將被稱爲..讓我知道,如果它解決您的問題.. –

回答

2

的問題是因爲您在$.post之後添加了callback()函數,默認情況下它是異步的。所以,你的'回調()'將在ajax完成之前執行。你在這裏有兩個選擇

  1. 使你的$.ajax同步,我不建議。
  2. 呼叫後jQuery('#parentCatSelect').append(html);(的$.post成功塊)回調即你的DOM被填入值之後。

希望它可以幫助..