如何从ajax异步请求中返回我想要的内容?

时间:2015-06-21 17:50:11

标签: javascript ajax

这件事总是对我不利。

$.validator.unobtrusive.adapters.add('appointmentvalidating', ['daylimit'], function (options) {
    options.rules['appointmentvalidating'] = options.params;
    options.messages.appointmentvalidating = options.message;
});
$.validator.addMethod('appointmentvalidating', function (value, element, params) {
    var dtnow = new Date(Date.parse(value));
    var daylimit = parseInt(params.daylimit.toString());
    var count = 0;
    count = request(dtnow);
    if (count < daylimit) {
        console.log("true");
        return true;
    }
    if (count >= daylimit) {
        console.log("true");
        return false;
    }
});
function request(dtnow) {
    $.ajax({
        url: "/api/webapi/",
        type: "GET",
        async: true,
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
           var count = 0;
            for (var i = 0; i < data.length; i++) {
                var datentbproc = data[i].Date;
                var datentbproccor = new Date(Date.parse(datentbproc.toString().substr(5, 2) + '/' + datentbproc.toString().substr(8, 2) + '/' + datentbproc.toString().substr(0, 4)));
                if (datentbproccor.getFullYear() == dtnow.getFullYear() && datentbproccor.getMonth() == dtnow.getMonth() && datentbproccor.getDate() == dtnow.getDate()) {
                    count = count + 1;
                }
            }
            return count;
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log('request is failed');
        },
        timeout: 120000,
    });
}

但是当我使用像这样的同步请求时,它确实会返回false,就像我想要的那样。

$.validator.unobtrusive.adapters.add('appointmentvalidating', ['daylimit'], function (options) {
    options.rules['appointmentvalidating'] = options.params;
    options.messages.appointmentvalidating = options.message;
});
$.validator.addMethod('appointmentvalidating', function (value, element, params) {
    var dtnow = new Date(Date.parse(value));
    var daylimit = parseInt(params.daylimit.toString());
    var count = 0;
    $.ajax({
        url: "/api/webapi/",
        type: "GET",
        async: false,
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            for (var i = 0; i < data.length; i++) {
                var datentbproc = data[i].Date;
                var datentbproccor = new Date(Date.parse(datentbproc.toString().substr(5, 2) + '/' + datentbproc.toString().substr(8, 2) + '/' + datentbproc.toString().substr(0, 4)));
                if (datentbproccor.getFullYear() == dtnow.getFullYear() && datentbproccor.getMonth() == dtnow.getMonth() && datentbproccor.getDate() == dtnow.getDate()) {
                    count = count + 1;
                }
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log('request is failed');
        },
        timeout: 120000,
    });
    if (count >= daylimit) {
        return false;
    }
    else if (count < daylimit) {
        return true;
    }
});

正如您所看到的,我在同步请求中使用了If block。我尝试了很多东西。他们中的任何一个都不起作用。如果有人面对类似的问题并解决了我可以帮助我。 现在该怎么办?

0 个答案:

没有答案
相关问题