通过json传递下拉列表的选定文本

时间:2014-04-24 10:31:49

标签: jquery asp.net-mvc json drop-down-menu controller

我想从控制器方法的下拉列表中获取所选选项的文本。 但是使用下面的代码,我只得到初始文本而不是更改的文本。

在data.submit之前的

data.jsonOfLog获取更改的文本,但不是这个文本传递给控制器​​。

在控制器中:

[HttpPost]
public JsonResult GoodSave(string jsonOfLog)
{

在视图中:

<script type="text/javascript">
        $(function () {                 
            json = { jsonOfLog: $("#ddlDocumentType option:selected").text() };
            $('#fileupload').fileupload({
                dataType: 'json',
                contentType: 'application/json; charset=utf-8',
                url: '/Home/GoodSave',
                data: JSON.stringify(json),
                add: function (e, data) {
                    $('#fileuploadbutton').click(function () { 
                        data.jsonOfLog = $("#ddlDocumentType option:selected").text();
                        data.submit();
                    })
                }                
            });
        });
    </script>

enter image description here

2 个答案:

答案 0 :(得分:2)

当您尝试上传时,这会更改formData

<script type="text/javascript">
    $(function () {                 
        $('#fileupload').fileupload({
            contentType: 'application/json; charset=utf-8',
            url: '/Home/GoodSave'
        })
        .on("fileuploadsubmit", function (e, data) {
            data.formData = {
                jsonOfLog: $("#ddlDocumentType option:selected").text()
            };
        });

        $("#fileuploadbutton").on("click", function() {
            $("#fileupload").submit();
        });
    });
</script>

我认为您不需要对数据进行字符串化,因此请尝试以上操作,如果这不起作用,请像以前一样使用stringify。当您使用与服务器方法中的参数匹配的属性名称传递数据时,不应该使用它。

这来自blueimp文件上传文档...

https://github.com/blueimp/jQuery-File-Upload/wiki/How-to-submit-additional-form-data

答案 1 :(得分:0)

最后,有效的是:

<script type="text/javascript">
    $(function () {
        $('#fileupload').fileupload({
            add: function (e, data) {
                $('#fileuploadbutton').click(function () {
                    $.ajax({
                        type: 'POST',
                        cache: true,
                        url: '/Home/GoodSave',
                        data: { jsonOfLog: $("#ddlDocumentType option:selected").text() },
                        success: function (data) {

                        },
                        error: function (data) {
                            alert("error");
                        }
                    });
                });
            }    
        });    
    });    
</script>