0

JSON呼び出しを使用して、渡されたコースコードに基づいて利用可能な参加者の場所のリストを取得しています。その結果は、ページに動的に追加された選択項目に入力するために使用されます。応答は正しく取得されていますが、ページに追加するためのコードが機能していません。

$("#venueCourses").live("change",function (event) {
    var cID = $("#venueCourses").val().split("|");

    -- This call works and provides a list of dates for the course passed in
    $.post("includes/ajaxdates.asp",{courseID:cID[0], lessonType:cID[1], retType:"dl"},function(result){
            -- The data is displayed correctly
            $("#cdisplay").html(result);
    });

    -- This is the JSON Call that retrieves data
    $.getJSON('includes/ajaxdates.asp',{courseID:cID[0], lessonType:cID[1], retType:"lt", ajax: 'true'}, function(data) {

        -- NOTHING IN HERE SEEMS TO WORK
        var items = [];
        $.each(data, function(key, val) {
              items.push('<option value="' + key + '">' + val + '</option>');
        });

        $('<select/>', {
             'id': 'participantType',
             html: items.join('')
             }).appendTo('#partType');
    });
});

JSON呼び出しは、このURLを提供して、http://www.surreyjive.co.uk/includes/ajaxdates.asp?courseID = ES-1-2013&lessonType = Intermediates&retType = lt&ajax=trueから応答を取得し ます。

そして、これはJSON応答です{'0':'選択してください'、'Lady':'Individual Lady'、'Couple':'Couple'}

上記で機能していないコードは、実際には次のコードの本体でも機能していませんでした。

 var options = [];
 for (var i = 0; i < j.length; i++) {
    options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
}
 alert(j);
 $("#participantType").html(options);

これを修正するための助けをいただければ幸いです。

グラハムに感謝します

4

2 に答える 2

1

応答データに従って、次のスクリプトが機能するはずです。

var response = ' {"values": {"option": [{"value": "0","text": "Please Select"},{"value": "lady","text": "Individual Lady"},{"value": "gent","text": "Individual Gent"},{"value": "couple","text": "Couple"}]}}';
var data = jQuery.parseJSON(response);
var selectBox = $('<select/>', {'id': 'participantType'});
$.each(data.values.option, function(key, option) {
    $('<option />', {value: option.value, text: option.text}).appendTo(selectBox);
});
selectBox.appendTo('#partType');
于 2012-08-07T07:38:43.357 に答える
0

わかりましたので、この問題を新鮮な目で見た後、最終的に問題を修正することができました。おそらくそれを修正する最良の方法ではありませんが、私が望んでいた結果が得られます。したがって、最初の変更は、JSON が返されたメソッドを置き換えることでした。

これから:

$.getJSON('includes/ajaxdates.asp',{courseID:cID[0], lessonType:cID[1], retType:"lt", ajax: 'true'}, function(data) {

これに:

$.get('includes/ajaxdates.asp',{courseID:cID[0], lessonType:cID[1], retType:"lt", ajax: 'false'}, function(d) {

そこで、$.getJSON を $.get に置き換えて、ASP ページがテキスト文字列を返すようにしました。

テキスト文字列はコールバック関数から変数 d に返されたため、これは変数データに解析された JSON でした。

var data = jQuery.parseJSON(d);

ほら、スクリプトは毎回機能します。MULTIDOT のコードが JSON のテキスト文字列では機能したが、オブジェクトでは機能しなかったことを理解しています。これは私の知識が本当に不足しているところなので、元のスクリプトのどこが間違っていたのかを理解していただければ幸いです.

MULTIDOT のすべての助けに感謝します。

乾杯グラハム

于 2012-08-08T19:12:31.550 に答える