Neden bu javascript / jQuery JSON ayrıştırma kodu çalışmaz?

2 Cevap php

İşte benim jQuery kodudur. Bu this php script tarafından döndürülen json ayrıştırmak gerekir. Php çalışmak bilinmektedir. Ayrıca javascript tarih nesnesine tarih değişmezleri dönüştürmek gerekir. Ancak, bir hata dates.length oluşur. Herkes koduyla yanlış olduğunu görebilir miyim?

if($("#calendar").length)
{
    var dates;
    $.post("/dates/jsondates.php",function(data)
    {
    	for(var i=0; i<data.length; i++)
    	{
    		data[i].start = new Date(data[i].start);
    		data[i].end = new Date(data[i].end);
    	}
    	dates = data;
    }, "json");

    $("#calendar").datepicker(
    {
    	beforeShowDay: function(date)
    	{
    		for(var i=0; i<dates.length; i++)
    		{
    			if(dates[i].start<date<dates[i].end)
    			{
    				return new Array(0, "booked", dates[i].comment);
    			}
    		}
    		return new Array(1);
    	}
    });
}

2 Cevap

Ajax çağrı tamamlandıktan önce datepicker kodu (potansiyel olarak) idam elde edilecektir. . En azından $ sonrası geri arama içine kod datepicker kısmını hareket deneyin: -

if ($("#calendar").length)
{
    var dates;
    $.post("/dates/jsondates.php",function(data)
    {
        for(var i=0; i<data.length; i++)
        {
                data[i].start = new Date(data[i].start);
                data[i].end = new Date(data[i].end);
        }
        dates = data;

        $("#calendar").datepicker(
        {
            beforeShowDay: function(date)
            {
                    for(var i=0; i<dates.length; i++)
                    {
                            if(dates[i].start<date<dates[i].end)
                            {
                                    return new Array(0, "booked", dates[i].comment);
                            }
                    }
                    return new Array(1);
            }
        });
    }, "json");

}

Düzenleme: bana ise bir kenara, ve, muhtemelen tarih verilerini almak ve bunu bir geri beslemeye arayan fonksiyonu çeşit içine kadar bölünmüş olur gibi. Örneğin: -

function __callDateController(callback)
{
    $.post("/dates/jsondates.php",function(data)
    {
        for(var i=0; i<data.length; i++)
        {
            data[i].start = new Date(data[i].start);
            data[i].end = new Date(data[i].end);
        }

        if (callback !== undefined) {
            callback(data);
        }
    }, "json");
}

Ve sonra başa tarih seçici için bunu bir geri beslemek: -

__callDateController(function(dates)
{
    $("#calendar").datepicker(
        {
            beforeShowDay: function(date)
            {
                for(var i=0; i<dates.length; i++)
                {
                    if(dates[i].start<date<dates[i].end)
                    {
                        return new Array(0, "booked", dates[i].comment);
                    }
                }
                return new Array(1);
            }
        });
    });

Sorun AJAX işleme yapılır önce takvim datepicker kod yürütme olmasıdır.

Sizin datepicker kod döngü için, ve çizgi altında dates = data; altında, $. Sonrası geri arama işlevi içinde gitmek gerekiyor