2017-03-01 42 views
0

我有一個使用AJAX調用填充名爲filter items.php的PHP文件的下拉框(使用jQuery Autocomplete小部件)。我希望能夠跟蹤用戶選擇的項目,以便如果他們轉到另一個頁面,他們的選擇會在他們返回時保留。Prop('selected',true)無法預選下拉列表項目

我試圖通過填充一個表格來暫時保存項目的ID,因爲他們做出選擇。當他們回到頁面時,它將對一個名爲'check basket.php'的PHP文件進行另一次AJAX調用,該文件將返回當前所選項目的列表。然後它會比較兩個列表中的項目,因爲它會生成下拉列表,當我添加一個匹配prop('selected', true)但它似乎不工作?

下面的代碼:

//Check for items in Basket 
$.ajax({ 
    url: "check basket.php", 
    dataType: "json", 
    success: function(datas) { 
    var s = 0; 
    var cbox = []; 
    var itemid = []; 
    var quant = []; 
    $.each(datas, function(index, selected) { 
     while (selected.cbox[s]) { 
     cbox[s] = selected.cbox[s]; 
     itemid[s] = selected.item_id[s]; 
     quant[s] = selected.quant[s]; 
     s++; 
     } 
    }) 

    //BUILD LIST 
    $.ajax({ 
     url: "filter items.php?type=0", 
     dataType: "json", 
     success: function(data) { 
     $.each(data, function(index, publisher) { 
      for (r = 1; r < 21; r++) { 
      j = 1; 
      while (publisher.item[j]) { 
       for (sc = 0; sc < cbox.length; sc++) //Compare items in basket to pre-select 
       { 
       if (r == cbox[sc] && publisher.item_id[j] == itemid[sc]) { 
        alert(publisher.item[j] + " is in Basket for cbox " + cbox[sc] + " and J is " + j); 
        $('#' + r + 'combobox').append($('<option>', { 
        value: publisher.item_id[j] 
        }).text(publisher.item[j]).prop('selected', true)); 
       } else 
        $('#' + r + 'combobox').append($('<option>', { 
        value: publisher.item_id[j] 
        }).text(publisher.item[j])); 
       j++; 
       } 
      } 
      } 
     }) 
     } 
    }); 
    } 
}); 

回答

0

我已經意識到我做了什麼錯在這裏,道具(「選擇」,真)工作正常,它只是列表的實際內容不在Jquery自動完成代碼執行之前生成的。我將生成列表的AJAX函數的設置更改爲異步,並且做到了這一點!

相關問題