私は難しいことをやったと思います。私は2つのフィルタリング選択ボックスを持つフォームを持っています。最初のものは、3つの値のハードコードされた配列によって設定されます(後で動的になります)。値を選択すると、json-rpc呼び出しがデータベースに送られ、2番目のボックスに必要な値が返されます。それはアメリカが選んだ国のように考える - データベースは2番目のボックスを埋めるためにアメリカの都市だけを返します。dojo filtering ajaxコールで選択する - 返された値をセレクトボックスに取り込む方法
これは、2番目のテキストボックスを移入するために私のJavascriptです:これは、フォームを作成するためのPHPで
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;
}
}
);
}
:
$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');
私は値を設定するいくつかの異なる方法を試してみましたが、それはちょうど変わっていないようです...結果オブジェクトはこのようになります:
result[0] "[{"name":"Test1","id":"1"}]"
すべて私はNTの値は"Test1"
です。私はそれが何かシンプルだと確信していますが、それを見ることはできません!唯一の物理を返す
var secondaryFilteringSelect = dijit.byId('subCategoryId');
document.getElementById
とdojo.byId
:私はあなたが何をする必要があるかと思います
を見てみたいと思うでしょうである「という結果[0] ... "行?あなたは、あなたのサーバーがそのような場合には何かを返せないと確信していますか? – hugomg
result = dojo.eval( "(" + response + ")")これはサーバーから返されたjson文字列です。何がもっと元気? – Pjn2020
JSONの外観の例を挙げることはできますか?私はあなたをよく理解していないと思う。 – hugomg