0

別のドロップダウンリストの選択に基づいて、1つのドロップダウンリストにデータを入力したいと思います。

私はそれがかなり一般的な問題であることを知っています、そして私は丸2日間、ネット上で見つけたさまざまなサンプルを試してきましたが、役に立ちませんでした!

これが私のコードです:

コントローラ:

 public List<SelectListItem> listTestCases(string id)
    {
        IQueryable<SelectListItem> A = repository.listTestCases(id);
        return (A.toList());
    }

    public JsonResult listTestCases_2(string id)
    {
        IQueryable<SelectListItem> A = repository.listTestCases(id);
        return Json(A);
    }

2つのメソッドがあります。1つはリストを返し、もう1つはJSONResultsを返し、ネット上で見つけたすべてのメソッドを両方のメソッドで試しました。脚本:

<script>
$(document).ready(function() {
    $('select#testCategoriesUniqueId').change(function() {

        var testCategory = $(this).val();
        $.ajaxSetup({ cache: false });
        alert(testCategory);

        $.getJSON("TestInput/listTestCases/" ,  {id: testCategory}, function(data) {
            alert("here");
        });

    });
});

上記のコードでは、コードはlistTestCasesを通過し、結果を取得しますが、success関数には移動しません。(警告しません)

私が試してみました:

 $.getJSON("TestInput/listTestCases/" + testCategory, null, function(data) {
            alert("here");
        });

驚くほど同じ結果ではありません。

私も試しました:(json-p)

 $.ajax({
            url: "TestInput/listTestCases/" + testCategory,
            dataType: "json-p",
            success: function(data) {
                alert(data.length);
                var S = "";
                $("#testCasesUniqueId").removeOption(/./);
                for (var i = 0; i < data.length; i++) {
                    S += data[i];
                    var val = data[i].Value;
                    var text = data[i].Text;
                    $("#testCasesUniqueId").addOption(val, text, false);
                }
                alert(S);
            }
        }
        );

結果は文字列(System.collections.List [... SelectListItem]。であり、リストのオブジェクトは表示されません。したがって、listTestCases2で試してみましたが、メソッドも呼び出されていません。

getの代わりにpostを使用する必要があることをどこかで読んだり、postJSONを試したりしました。結果はありません。

基本的に私はとても迷っています。

4

3 に答える 3

0

どこかで、目的のために「投稿」メソッドを使用する必要があることを読みました。

 $.ajax({
            url: "TestInput/listTestCases_2/" + testCategory,
            dataType: "json",
            type: 'post',
            success: function(data) {
                alert(data.length);

            }
        });

私のために働きます。

于 2012-10-30T21:17:07.247 に答える
0

呼び出しの設定をtestCategory使用してパラメーターを渡してみてください。data:$.ajax

 $.ajax({
            url: "TestInput/listTestCases",
            data: { id: testCategory },
            dataType: "json",
            success: function(data) {
                alert(data.length);
                var S = "";
                $("#testCasesUniqueId").removeOption(/./);
                for (var i = 0; i < data.length; i++) {
                    S += data[i];
                    var val = data[i].Value;
                    var text = data[i].Text;
                    $("#testCasesUniqueId").addOption(val, text, false);
                }
                alert(S);
            }
        }
        );
于 2012-10-27T03:34:31.197 に答える
0

Web ルートから ajax 呼び出しを参照していることを確認してください (URL の前に「/」を付けます)。書かれているように、呼び出しを相対的に参照しています。jquery/javascript で二重引用符を使用しないことをお勧めします。また、結果の種類を混在させないでください。コントローラーが TestInput であると仮定して、次を試してください。

 $.ajax({
        url: '/TestInput/listTestCases_2/' + testCategory,
        type: 'get',
        dataType: 'json',
        success: function(data) {
            alert(data.length);
            var S = '';
            $('#testCasesUniqueId').removeOption(/./);
            for (var i = 0; i < data.length; i++) {
                S += data[i];
                var val = data[i].Value;
                var text = data[i].Text;
                $('#testCasesUniqueId').addOption(val, text, false);
            }
            alert(S);
        }
    });
于 2012-10-27T00:50:48.803 に答える