0

以前に尋ねた質問を絞り込んで、何が悪いのかを見つけましたが、それを解決することはできません。

次のイベントが発生する前に、1つのイベント関数内で設定する必要のある変数があります。

Ajax呼び出しを介して変数を取得するため、これは発生していません。そして、私はすべてのajax設定を正しく持っていると思いますが(?)-それは起こりません。Firebugでコンソールログを使用していますが、「2」が含まれるコンソールログは、最初に作成する必要がある他のログエントリ(「1」が含まれる)の前にログに記録されます。

これは、ajax呼び出しを伴うdatepickerインスタンスの一部です。以下の完全なコード。ちなみに、私はajax呼び出しを取り出し、テストするためにハードコードされた変数を挿入しました。これは完全に機能します。したがって、正しく機能していないのはajaxです。

変数'varDate'は、ドキュメントレディ関数の外部で宣言されています。

<script type='text/javascript'>
 var varDate = 'toby';
$(document).ready(function(){

...そしてここのメインコード

$('.subject-date-pick').datetimepicker({
    timeFormat: 'hh:mm:ss',
    startDate:'01/01/1996',
    clickInput:true,
    beforeShow: function(input,inst) {

        var source = $("#" + inst.id).attr('source');
        var source_id = $("#" + inst.id).attr('source_id');
        var thing = $.ajax({
            type: 'GET', 
            url: 'ajax_get_unavailable_dates.php',
            dataType: 'text',
            async: 'false',
            global: 'false',
            data: {
                source_type: source,
                source_db_id: source_id
                  },
            success: function(msg) {


                console.log("1 - got the result");

                varDate = (msg)
            }
        });
        console.log("2 - ajax complete - logging console");     
        console.log("Post Ajax"+varDate);

    },

ここでコンソールが行うことは、最初に変数を誤ってログに記録し(SECONDログイベントを使用して)、次にdatepickerの次のイベントが発生します。その後、変数が更新され、日付ピッカーフィールドをクリックすると、正しい変数が設定されますが、これは遅すぎて適切ではありません。

だから:コンソールの結果:

Ajax呼び出しのGETリクエスト

2-ajaxcomplete-ロギングコンソール

Ajaxtobyを投稿する

1-結果を得た

..。

誰か助けますか?

4

2 に答える 2

1

これは理由だと思います'false' == true:)

ajaxオプションasync: false;として再試行してください。$.ajax

于 2012-05-23T00:23:09.130 に答える
0

async:false代わりに試してくださいasync:'false'

于 2012-05-23T00:22:04.017 に答える