2013-10-04 5 views
-1

В настоящее время я работаю над изменением содержимого выпадающего списка с использованием ajax и jquery и заполнения из базы данных. Используя jquery, я могу очистить и добавить в раскрывающийся список просто отлично. Моя проблема возникает, когда вы пытаетесь попасть в контроллер, чтобы попасть в базу данных для получения информации, необходимой для заполнения второй.Использование Ajax для заполнения раскрывающегося списка каскадов

Как это сделать? Я провел три дня чтения через другие SO вопросы в надежде найти ответ, а вот код JQuery У меня есть до сих пор:

$('#Vehicle_KovId_value').change(function() { 
     var kovID = $(this).val(); 
     if (kovID != null && kovID != '') { 
      $('#Vehicle_BodyStyle_value').get(0).options.length = 0; 
      $('#Vehicle_BodyStyle_value').get(0).options[0] = new Option('Please Select One', '-1'); 
      $.ajax({ 
       type: "POST", 
       url: "AjaxController/Index", 
       async: true, 
       data: "{KovID:" + kovID + "}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (msg) { 
        $('#Vehicle_BodyStyle_value').get(0).options.length = 0; 
        $('#Vehicle_BodyStyle_value').get(0).options[0] = new Option("Please Select One", "-1"); 
        alert("Worked!"); 
        $.each(msg.d, function (index, item) { 
         $('#Vehicle_BodyStyle_value').get(0).options[$('#Vehicle_BodyStyle_value').get(0).options.length] = new Option(item.Display, item.Value); 
        }); 
       }, 
       error: function() { 
        $('#Vehicle_BodyStyle_value').get(0).options.length = 0; 
        alert("Failed to load styles"); 
       } 
      }); 
     } 
    }); 

Я попробовал несколько различных установок URL-адрес в приведенном выше коде , такие как:

url: "@Url.Action('AjaxController', 'Index')", 
url: "/AjaxController/Index", 
url: "/Controllers/AjaxController/Index", 
url: "Controllers/AjaxController/Index" 

для справки, хотя мы действительно не сделали ничего с контроллером все же, вот код для контроллера:

Namespace NoticeOfSale 
    Public Class AjaxController 
     Inherits System.Web.Mvc.Controller 

     ' 
     ' GET: /Ajax 

     Function Index() As ActionResult 
      Return View() 
     End Function 

    End Class 
End Namespace 

Я не уверен, если я просто получил неправильный синтаксис или если я нахожу синтаксис для более поздних версий MVC, поскольку я использую MVC 2.

+0

Я понимаю, что это, возможно, глупый вопрос, для некоторых из вас, но я новичок в программировании, и я надеюсь, чтобы понять это либо через ответ здесь или через выходные исследование в понедельник, поэтому я могу реализовать исправление и скоро этот код работает. Еще раз, любая помощь или предложения очень ценятся! Заранее благодарю за любую помощь! – Kendra

+1

Вы использовали Firebug, чтобы узнать, что происходит в вашем коде jquery? – markpsmith

+0

Я даже не могу заставить Firefox открыть его. Я использую IE8 и Chrome. Но я посмотрю, смогу ли я понять это и попробовать. Отличная идея! – Kendra

ответ

2

Проблема здесь была в вызове.

$.ajax({ 
       type: "POST", 
       url: "AjaxController/Index", 
       async: true, 
       data: "{KovID:" + kovID + "}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 

И тип, и адрес неверны. Я должен был быть:

$.ajax({ 
      type: "GET", 
      url: '/Ajax/Index', 
      async: false, 
      data: { KovID: kovID }, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json",