![](/img/trans.png)
[英]How do I populate a select box using an ajax call which returns a list of strings using dojo?
[英]dojo filteringselect with ajax call - how to populate select box with returned values
我想我已經完成了困難的事情。 我有一個帶有 2 個過濾 select 框的表格。 第一個由 3 個值的硬編碼數組填充(稍后將變為動態)。 當我 select 值時,我有一個 json-rpc 調用 go 到我的數據庫並返回我想要的第二個框的值。 把它想象成選擇了美國的國家——數據庫只返回美國城市來填充第二個框。
這是我的 Javascript 填充第二個文本框:
function category_changed()
{
var store = directoryBroker.getSubCategorys(document.getElementById('categoryId').value);
store.addCallback(
function (response)
{
var result = dojo.eval("(" + response + ")");
if (typeof(result)!='undefined')
{
document.getElementById('subCategoryId').disabled = false;
document.getElementById('subCategoryId').value = result[0].id;
}
}
);
}
這是用於創建表單的 php:
$category = new Zend_Dojo_Form_Element_FilteringSelect('categoryId');
$category
->addMultiOption('a', '-- Please Select --')
->addMultiOptions($directoryModel->getAllCategorysForSelect())
->setValue('a')
->setRequired(true)
->setAttribs(
array(
'style' => 'width: 400px',
'onchange' => 'JavaScript: category_changed();'
)
)
->setLabel("Category:")
->addFilter('StringTrim')
->addValidator('int');
$subCategory = new Zend_Dojo_Form_Element_FilteringSelect('subCategoryId');
$subCategory
->addMultiOption('-1', '-- Select Category First --')
->setRequired(true)
->setAttribs(
array(
'disabled' => 'disabled',
'onchange' => 'JavaScript: subCategory_changed();',
'style' => 'width: 400px;'
)
)
->setLabel("Sub Category:")
->addValidator('int');
我嘗試了幾種不同的設置值的方法,但它似乎不會改變......結果 object 看起來像這樣:
result[0] "[{"name":"Test1","id":"1"}]"
我想要的只是"Test1"
作為值,我確定這很簡單,但就是看不到它!
我認為您需要做的是將您的電話更改為
document.getElementById('subCategoryId')
調用檢索您的實際 dijit 小部件的實例:
var secondaryFilteringSelect = dijit.byId('subCategoryId');
document.getElementById
和dojo.byId
只返回元素的物理 dom 節點,而不是實際的 javascript 小部件 object。 您想改用dijit.byId
。
然后,使用該小部件,您可以使用小部件的set
function 來設置其屬性
secondaryFilteringSelect.set('disabled', false);
secondaryFilteringSelect.set('value', result[0].id);
查看FilteringSelect API 文檔了解更多信息。
此外,要根據第一個菜單中的更改向 FilteringSelect 添加新選項,您可能需要查看 FilteringSelect 的繼承方法addOption
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.