Ajax异步选项让我循环

时间:2009-11-24 20:17:05

标签: php jquery ajax asynchronous

我正在使用ajax对某些日期进行验证(基本上确保第一个日期/时间发生在第二个日期/时间之前,并且都不是空白的。)

如果我将async设置为true,则可以正常工作,但我得到了误报,因为它与表单验证的其余部分同时工作。如果我将其设置为false,那么我会遇到“XMLHttpRequest Exception 101”的错误。

我只是想知道导致此错误的原因以及如何摆脱它(同时将异步设置为false)。我还有其他选择来解决它,但我宁愿知道它是什么以及如何解决它。

示例查询字符串?action=validate_dates&start_date=12/12/2009 21:00:00&end_date=12/12/2009 23:00:00&rsvp_start=11/21/2009&rsvp_end=11/30/2009

将返回“”或逗号分隔的字段列表,这些字段应标记为错误。

function validate_event()
{   

    $.ajax({
        type: "POST",
        url: "company_event_ajax.php",
        data: querystring,
        dataType: "text",
        async: false,
        error:function (xhr, ajaxOptions, thrownError)
        {
            alert(thrownError);
        },
        success: function(msg)
        {
            if (msg == "")
            {
                $("#event_start_date,#event_end_date,#rsvp_start_date,#rsvp_end_date").css("background-color", "#fff");
            }

            else
            {
                var errs = msg.split(',');
                for (i = 0; i < errs.length; i++)
                {
                    $("#"+errs[i]).css("background-color", "#fcc"); 
                }
                disable = true;
            }
        }
    });

    if (disable) return false;
    else return true;
}

这不是第一次发生这种情况。我想知道究竟是什么导致了101错误,以及如何避免它/修复它。

2 个答案:

答案 0 :(得分:0)

  

示例querystring?action = validate_dates&amp; start_date = 12/12/2009 21:00:00&amp; end_date = 12/12/2009 23:00:00&amp; rsvp_start = 11/21/2009&amp; rsvp_end = 11/30 / 2009`

此示例查询字符串包含空格。也许这是你的问题? URL中不允许使用空格(以及其他字符);您应该对参数值使用JavaScript escape()函数(例如12/12/2009 23:00:00),这会将空格字符转换为%20

答案 1 :(得分:0)

我认为它与我正在使用的测试服务器上的过期/无效服务器证书有关。当我在实时服务器上测试它时,该功能似乎100%工作。我会继续并将其归结为此。

由于