Jquery--级联下拉列表没有绑定值?

时间:2013-04-25 04:46:29

标签: jquery asp.net cascadingdropdown

我喜欢在asp.net中使用Jquery使用Cascading Dropdown

我的webMethod被调用,我得到了结果,但值没有得到绑定。

这是我的代码

    if ($(".ddlService").val() != "") {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "Port.aspx/VCode_Get",
                    data: "{ServiceID:'" + $(".ddlService").val() + "'}",
                    dataType: "html",
                    success: function (html) {
                        try {                           
                            Success(html);
                        } catch (ex) {
                            alert("ErrCode:7");
                        }
                    },
                    error: function (msg) {
                        alert("ErrCode:8");
                    }
                })
                return false;
            }
            else {
                    $(".ddlVoyage").empty();
                    $(".ddlVoyage").append("<option value=''>Select </option>");
                }
        });
    });

    function Success(result) {
       alert("SUccess Called");
       $(".ddlVoyage").empty();
       $(".ddlVoyage").append("<option  value=''>Select </option>");

       $.each(data, function (index, result) {
           $(".ddlVoyage").append("<option value='" + result.VoyageMasterID + "'>" + result.VoyageCode + "</option>");

        });          
    }

我得到警报

  

提醒(“已成功呼叫”);

另外注意Dropdown iam获取值选择绑定到它,但值没有得到绑定

Iam在我的数据库中也有值..,

我认为在iam袭击的这两行中需要改变一些东西

  $.each(data, function (index, result) {
           $(".ddlVoyage").append("<option value='" + result.VoyageMasterID + "'>" + result.VoyageCode + "</option>");

我不知道如何将这些值绑定到选择,我来到这里,任何人都可以帮助。

2 个答案:

答案 0 :(得分:0)

我认为你是以错误的方式绑定html ..

 ..<option value='" + result.VoyageMasterID + "'>"...
                  //--^^^^^^^^^^^^^^^^---here looks like you have a response as JSON..

试试这个

 $.ajax({
        type: "POST",
        ...
        dataType: "json",  //here get response as json
        .....  
       });   

并确保在控制器中将响应作为JSON发送(我认为你已经在做了)。将dataType更改为JSON应该有效..

<强>更新

你的json

 { "Table": [ { "VoyageMasterID": 3, "VoyageCode": "9101" }, { "VoyageMasterID": 3, "VoyageCode": "9101" }]}            

试试这个

function Success(result) {
   alert("SUccess Called");
   $(".ddlVoyage").empty();
   $(".ddlVoyage").append("<option  value=''>Select </option>");

   $.each(result.Table, function (index, value) {
       $(".ddlVoyage").append("<option value='" + value.VoyageMasterID + "'>" + value.VoyageCode + "</option>");

    });          
 }

因为你的json是在对象数组中..你必须遍历result.Table(你的对象的名字是表)并得到它的对应的voyagemasterid和voyagecode

答案 1 :(得分:0)

试试这个

$(".ddlVoyage").append("<option value='" + value.Value + "'>" + value.Text + "</option>");

这就是我使用它的方式

 $('#offices').change(function () {
            $.ajax({
                url: '@Url.Action("FillDepartments", "Contact")',
                type: 'POST',
                cache: false,
                data: { id: $(this).val() },
                dataType: 'json',
                success: function (departments) {
                    $.each(departments, function (i, departments) {
                        $("#departments").append('<option value=' + departments.Value + '>' + departments.Text + '</option>')
                    });
                },

                error: function (error) {
                    alert(errorss);
                }
            });
        });