0

在javascript中,我需要一个简单的日期列表,例如(对于jquery datepicker):

["16-5-2013", "24-5-2013", "25-5-2013", "26-5-2013"]

因为这个列表是动态的,所以我想使用这个 ajax 调用:

var disabledDays = $.ajax({
    type: 'GET',       
    url: "/disabled-days",
    });

在 Django 中,我编写了这个以 json 格式返回数据的测试视图:

def disabled_days(request, soort):
    from django.http import HttpResponse
    import json
    soort = ["16-5-2013", "24-5-2013", "25-5-2013", "26-5-2013", "27-5-2013"]
    return HttpResponse(json.dumps(soort), mimetype="application/json")

这里是json传递数据的方式吗?我在 responsText 中找到了日期列表,但我无法访问这些数据。

例如,我尝试遍历以下项目:

    for (i = 0; i < disabledDays1.length; i++) {
    item = results[i];
    disabledDays.push(item);
}

这会导致一个空列表。

响应文本为(编码为 json):

["16-5-2013", "24-5-2013", "25-5-2013", "26-5-2013"]

当我执行 console.log() 时,我会看到以下信息:

GET http://localhost:8080/disabled-days

200 OK
        39ms    
jquery-1.9.1.js (regel 8526)
Object { readyState=1, getResponseHeader=function(), getAllResponseHeaders=function(), meer...}

以下是 Anh Tú 给出的解决方案(尚未工作):

var disabledDays1 =     $.ajax({
    type: 'GET',       
    url: "/disabled-days",
    });

var disabledDays = []

for (i = 0; i < disabledDays1.length; i++) {
    item = results[i];
    if(typeof(responsetext)==string){responsetext= JSON.parse(responsetext);} $.each(responsetext,function(i,item){disabledDays.push(item);});

}
console.log(disabledDays);
4

1 回答 1

0

我认为您处理 ajax 请求是错误的。通常,您在请求成功时声明一个回调函数并处理接收到的数据,如下所示:

var disabledDays = []
$.ajax({
    type: 'GET',       
    url: "/disabled-days",
    success: function(data){
        // data is the response json
        disabledDays = data
        // do whatever it needs to be done with disabledDays, 
        // it should be the array of dates.
        // the process should be inside this method because of asynchronous
        // javascript method execution
    }
});

希望能帮助到你!

于 2013-05-14T12:39:57.503 回答