jQuery ajax调用没有填充多个select

时间:2013-05-16 13:44:42

标签: php ajax json

难以让这个工作。使用Chrome javascript控制台,我可以看到我的功能正在触发并获得结果我不知道它只是不会填充多重选择。这是代码:

jQuery的:

$("select[name='field[one]']").change(function()
        {
            var optionValue = $("select[name='field[one]']").val();
            $.get
            ('/directory/location/getData', {select:optionValue}, 
                function(data) 
                {
                    $("select[name='subjects']").val(data);
                }
            );
        }
    );

HTML:

<select name="field[one]" id="field_one">
    <option value="" selected="selected"></option>
    <option value="2011">2011</option>
</select>

<select multiple id="show_results" name="subjects" />
</select>

AJAX PHP Call:

public function executeGetData(sfWebRequest $request){
     $year = $request->getParameterHolder()->get('select'); 
     $specialties = Doctrine_Core::getTable('Specialty')->getSpecialtyArray();
     $array = array();
     foreach($specialties as $specialty){
         $array[$specialty['id']] = ''; 
         $count = Doctrine_Core::getTable('HistoricalSalaries')->getCountPerSpec($year, $specialty['id']);
         $array[$specialty['id']] .= $specialty['name']." Count($count)"; 
     }
     return $this->renderText( json_encode( $array ) );      
  }

结果是一个json编码的数组......我认为这是问题...让多重选择正确解释该信息。目前在调用和检索数据后没有任何反应。

以下是chrome调试器中显示的json编码数组结果的示例:

{
 2: "Aerospace Medicine Count(50)",
 3: "Abdominal Radiology (DR) Count(65)",
 4: "Addiction Psychiatry (P) Count(46)",
 5: "Adolescent Medicine (PD) Count(23)"
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

function(data) {
    $.each(data, function(index, itemData) {
        var newOption = "<option value='" + index + "'>" + itemData + "</option";
        $("#show_results").append(newOption);
    });
}

这是一个演示循环JSON的小提琴:http://jsfiddle.net/tymeJV/8eUFe/

这是演示您的问题的小提琴:http://jsfiddle.net/tymeJV/8eUFe/1/