2014-01-10 64 views
0

我想在下拉列表中選擇的項目的值發回到我的控制器中的Action方法在MVC4網絡中使用jQuery Ajax應用。我有一個名爲MeditechDropDown的下拉列表,這裏是我的jQuery功能,這是不是很工作。我設法達到了我的Action方法,但是傳入的值爲null。發送選定的下拉列表值回到控制器使用jQuery的動作Ajax MVC4

jQuery(document).ready(function() { 
    $("#MeditechDropDown").change(function() { 
     $.ajax({ 
      url: "/Home/PopulateEmailAddressUI", 
      data: JSON.stringify('id=' + $(this).val()), // Send value of the drop down change of option 
      type: 'POST', 
      contentType: 'application/json; charset=utf-8', 
      success: function (data) { 
       // Variable data contains the data you get from the action method 
      } 
     }); 
    }); 
}); 

操作名稱是PopulateEmailAddressUI。有人會對我做錯什麼好嗎?我知道我沒有正確編寫我的jQuery函數。非常感謝。

+0

您嘗試設置'數據類型:「json''在你的Ajax調用? – zgood

+0

是的,現在已經做到了。但仍然無效。 – user3041439

+0

我已更新我的答案,以顯示我的控制器代碼,如果這有助於任何 – zgood

回答

0

以下是完整的WORKING jQuery腳本:

jQuery(document).ready(function() { 
    $("#MeditechDropDown").change(function() { 
     var id = $(this).find(":selected").val() 
     var clientID = { "clientID" : id } 
     console.log(id) 
     $.ajax({ 
      url: "/Home/PopulateEmailAddressUI", 
      data: JSON.stringify(clientID), 
      type: 'POST', 
      contentType: 'application/json; charset=utf-8', 
      success: function (data) { 
       // Variable data contains the data you get from the action method 
      } 
     }); 
    }); 
}); 

謝謝大家,尤其是感謝你zgood :)

+0

我必須在這種情況下創建對象,稱爲clientID。在該對象中,我必須使用記號{「clientID」:id} where clientID here指的是傳遞給我的Action方法的字符串參數,然後我做了一個JSON.stringify這個對象,我得到了結果 – user3041439

+0

這是一個非常可靠的原因 - 它的可讀性非常好,請注意'console.log '在生產代碼中,因爲早期版本的IE不知道它是什麼,它會導致你的腳本不能在這些狗屎工作ty瀏覽器;) – zgood

+0

發佈後襬脫了console.log – user3041439

0

我在.NET MVC4中寫了一些成功的jQuery ajax調用。這是他們的樣子:

$('#projectList').on('click', 'li', function() { 
     pid = $(this).data('id'); 

     $.ajax({ 
      type: 'POST', 
      url: '/Admin/GetProject', 
      data: '{ id: ' + pid + ' }', 
      contentType: 'application/json; charset=utf-8', 
      dataType: 'json', 
      success: function (data) { 
       projectRetrieved(data); 
      } 
     }); 

    }); 

控制器:

 [HttpPost] 
     public ActionResult GetProject(int id) { 
      string connStr = ConfigurationManager.ConnectionStrings["Conn"].ConnectionString; 
      SqlConnection conn = new SqlConnection(connStr); 

      string sql = "SELECT * FROM [Portfolio] WHERE [id] = @id"; 
      SqlDataAdapter da = new SqlDataAdapter(sql, conn); 
      da.SelectCommand.Parameters.Add(new SqlParameter("@id", id)); 
      DataTable dt = new DataTable(); 

      conn.Open(); 
      da.Fill(dt); 
      da.Dispose(); 
      conn.Close(); 

      return Json(objConv.DataTableToArrayList(dt), JsonRequestBehavior.AllowGet); 
     } 
+0

謝謝你。麻煩的是你在GetProject操作方法中讀取的位置(int id),我在我的PopulateEmailAddressUI方法中讀取(字符串clientID),因爲它是字母數字。並且clientID以空值進入。 – user3041439

+0

@ user3041439我懷疑這行是:'data:JSON.stringify('id ='+ $(this).val())'是什麼給你帶來問題。將'$(this).val()'賦值給ajax調用之外的變量,看看是否有效。如果仍然沒有成功,請嘗試手動寫出數據對象:''{id:''+ id +'「}' – zgood

+0

我已經在我自己的答案中發佈了我的最新版本的jQuery函數。請有其他想法嗎?謝謝。 – user3041439

0

你可以這樣寫:

數據
 jQuery(document).ready(function() { 
    $("#MeditechDropDown").change(function() { 
     var id=$(this).val(); 
     $.ajax({ 
      url: "/Home/PopulateEmailAddressUI", 
      data: {clientID:id}, 
      type: 'POST', 
      contentType: 'application/json; charset=utf-8', 
      success: function (data) { 
       // Variable data contains the data you get from the action method 
      } 
     }); 
    });}) 

參數名稱應該是如控制器參數名

+0

沒有工作抱歉。我的Action方法如下所示:public ActionResult PopulateEmailAddressUI(string clientID){}和clientID將作爲null進入。 – user3041439

+0

然後寫: 數據:{clientid:客戶ID} – sapphireNK

+0

再次感謝你,但仍然無效:( – user3041439

相關問題