none
mvc отправка запроса к контроллеру с помощью jquery. Не работает в firefox. RRS feed

  • Вопрос

  • Здравствуйте,

    на форме есть два выпадающих списка(DropDownList), значение второго списка подгружаются после выбора значение в первом списке.

    @using (Html.BeginForm("Test", "TestController", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        
        <div class="upPanel">
            <div class="mainForm">
               
                <div class="formContent"> 
                        <table id="addAdvertTable">
                           
                            <tr>
                                <td>@Html.LabelFor(_ => _.MarkId, "Марка:") <span class="red">*</span>
                                </td>
                                <td>
                                    <table cellpadding="0" cellspacing="0" style="padding: 0px; margin: 0px">
                                        <tr style="padding: 0px; margin: 0px">
                                            <td style="padding: 0px; margin: 0px">
                                                @Html.DropDownListFor(_ => _.MarkId, ViewBag.CarMarks as List<SelectListItem>, (new { id = "marks" }))
                                            </td>                                      
                                        </tr>
                                    </table>
                                </td>
                            </tr>
                            <tr>
                                <td>@Html.LabelFor(_ => _.ModelId, "Модель:") <span class="red">*</span>
                                </td>
                                <td>@Html.DropDownListFor(_ => _.ModelId, ViewBag.CarModels as List<SelectListItem>, (new { id = "models" }))
                                </td>
                            </tr> </table> <div class="center" style="padding: 10px 0"> <input type="submit" class="small_btn" value="Отправить" /> </div> </div> </div> </div>

    Значение для models подгружается с помощью jquery(который находится сразу после формы):

    <script type="text/javascript">
        $(document).ready(function () {
            $(document.body).delegate('#marks', 'change', function () {
                $.getJSON('@Url.Action("GetModels", "TestController")', { markId: $(this).val() }, function (data) {
                    var models = $('#models').empty();
                    $.each(data, function () {
                        var option = $('<option>').val(this.Value).text(this.Text);
                        models.append(option);
                    });
                });
            });
        });
    </script>

    Контроллер(TestController - GetModels):

    public JsonResult GetModels(int markId)
    		{
    			var marksRepository = new DropDownRepository();
    
    			return Json(marksRepository.GetModelsForMark(markId), JsonRequestBehavior.AllowGet);
    		}

    В opere и ie вызод отправляется(в дебаге можно зайти в GetModels) в firefox код не вызывается. Если смотреть в firebug, то после строки:

    $.getJSON('@Url.Action("GetModels", "TestController")', { markId: $(this).val() }, function (data) {

    остальной код проскакивает. Если в браузере(firefox) вызвать : http://localhost:25909/Adverts/GetModels?markId=10, то в контроллер заходит,и значения возвращаются :

    [{"Selected":false,"Text":"Выберите модель","Value":""}, ...

    Пытался, поменять в js, таким образом :

     $.getJSON('~/@Url.Action("GetModels", "TestController")', { markId: $(this).val() }, function (data) {

    результата не было.

    Заранее благодарен, за помощь.






    • Изменено Denis99 3 сентября 2012 г. 18:35
    3 сентября 2012 г. 18:32

Ответы

Все ответы