使用jQuery Ajax MVC4将下拉列表的选定值发送回Controller Action

时间:2014-01-10 14:23:44

标签: jquery ajax asp.net-mvc-4

我正在尝试使用MVC4 Web应用程序中的jQuery Ajax将下拉列表中所选项的值发回给我的控制器中的Action方法。我有一个名为MeditechDropDown的下拉列表,这是我的jQuery函数,它不是很有效。我设法达到我的Action方法,但进入的值为null。

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函数。非常感谢。

3 个答案:

答案 0 :(得分: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);
        }

答案 1 :(得分: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
            }
        });
    });})
数据参数名称中的

应该是Controller参数名称

答案 2 :(得分: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:)