0

私のフォームでは、メール入力ボタンがフォーカスを失った後、ajax 呼び出しを行っています。返された応答データを使用してモーダルを作成しています。次にモーダル I で、ユーザーはボタンをクリックして必要なレコードを選択し、フォームにそのデータを入力できます。ボタンにデータIDを渡しています。

モーダルのボタンをクリックするまで、すべて正常に動作します。その時点で ajax レスポンスは利用できなくなっていると思いますか?

だから私の質問は、データをもう一度検索するために別の ajax 呼び出しを行う必要がありますか、それともまだ参照できる場所にありますか?

これが私のコードです:

$(document).ready(function () {
    $(document).on('click', '.choosebtn', function () {
        console.log(this);
        $(".myModal").modal("hide");
        $('.myform').populate({
            response.DATA[event.target.id]
        }, {
            phpNaming: true,
            debug: true
        });
    });

    $('.email').blur(email_check);
});

function email_check() {
    var email = $('.email').val();
    var data = $('form').serialize();

    if (email == "" || email.length < 10) {
        $('.email').css('border', '3px ##CCC solid');
    } else {
        jQuery.ajax({
            type: "POST",
            url: "/managemembers/checkemail?format=json",
            data: data,
            dataType: "json",
            cache: false,
            success: function (response) {
                if (response.DATA) {
                    var trHTML = '';
                    $.each(response.DATA, function (index, value) {
                        trHTML += '<tr><td width="25%">' 
                        + value[0] + '</td><td width="25%">' 
                        + value[1] + '</td><td width="25%">' 
                        + value[2] + '</td><td width="25%">' 
                        + value[3] + '</td><td><button type="button" class="choosebtn" id=' 
                        + index + '>Choose</button></td></tr>';
                    });
                    $('.mytable').append(trHTML);

                    $(".myModal").modal("show");
                }
            }
        });
    }
}
4

3 に答える 3

0

responseは AJAXsuccess関数に対してローカルであるため、関数にアクセスすることはできませんpopulate。簡単な修正は、responseをグローバル変数に割り当てることです。

$(document).ready(function(){
    var ajaxResponseData;
    ..
    //Reference global in populate
    $('.myform').populate({ajaxResponseData.DATA......
    ..
    ..
    ..
    success: function (response) {
        ajaxResponseData = response;
});
于 2013-10-11T14:53:27.247 に答える
0

できない応答にアクセスしようとしている場所は明確ではありませんが、コールバックの外ではアクセスできません。ただし、後で必要になる場合は、ajax 呼び出しの外部の変数に応答を保存できます。このような:

var yourResponseVariable;

jQuery.ajax({
   type: "POST",
   url: "/managemembers/checkemail?format=json",
   data: data,
   dataType: "json",
   cache: false,
   success: function (response) {
            if(response.DATA){
            var trHTML = '';

            $.each(response.DATA, function (index, value) {
                trHTML += '<tr><td width="25%">' + value[0] + '</td><td width="25%">' + value[1] + '</td><td width="25%">' + value[2] + '</td><td width="25%">' + value[3] + '</td><td><button type="button" class="choosebtn" id=' + index + '>Choose</button></td></tr>';
            });

            $('.mytable').append(trHTML);

            yourResponseVariable = response;

            $(".myModal").modal("show");
        }    
   }

});

必要に応じて、応答全体ではなく、応答の一部を保存することもできます。

于 2013-10-11T14:55:13.140 に答える
0

1 つのオプションは、関心のある値を隠しフィールドに格納し、jQuery トラバーサル関数を使用してそれを見つけることです。

したがって、現在マークアップでは、次のスニペットになります (特に):

<td>
    <button type="button" class="choosebtn" id='1'>Choose</button>
</td>

必要な情報を含む非表示フィールドを使用して、これで終わるように変更できます。

<td>
    <button type="button" class="choosebtn" id='1'>Choose</button>
    <input type="hidden" class="myValue" />
</td>

次にjsで:

$(document).on('click', '.chooseBtn', function() {
    var myVal = $(this).siblings('.myValue').val();
});
于 2013-10-11T14:58:30.770 に答える