порядок перепутывания почтовых запросов ajax - PullRequest
0 голосов
/ 04 июля 2010

У меня есть страница, на которой пользователь отправляет данные (через ajax) на страницу php, которая вводит их в базу данных. Однако, иногда, когда я проверяю базу данных, запросы выходят из строя.

По сути, пользователь вводит события по мере их возникновения и нажимает «Отправить», чтобы отправить их в базу данных. Иногда пользователь записывает 2 события перед его отправкой, и в этом случае 2 события отправляются по одному за раз. Это тот случай, когда они время от времени переключаются.

Вот соответствующий код.

    i = 0;
    while (event[i]) {

        var post_data =  //post data for event[i]

        $.ajax({  
            type: "POST",  
            url: "save_event.php",  
            data: post_data,
        }); 

        event.splice(0,1);
    }

Event [] - это массив, содержащий события, которые отправляет пользователь. Каждое событие - это объект с различными свойствами. Обычно в массиве только 1 объект, но иногда их 2. Я удалил часть, где я делаю post_data, потому что он занимает 3 строки.

Может быть, в половине случаев, когда есть 2 события, они обращаются в базу данных в обратном порядке. Есть ли способ, которым я могу устранить это? Или это полностью зависит от времени, которое требуется серверу для обработки, и иногда он заканчивает 2-й, прежде чем завершит обработку 1-го?

Ответы [ 2 ]

2 голосов
/ 04 июля 2010

Поскольку запросы AJAX отправляются асинхронно и параллельно, это будет полностью зависеть от браузера и времени обработки сервера. Вы можете добавить опцию async: false, но это приведет к зависанию браузера во время запросов, поскольку они больше не будут асинхронными.

Я бы порекомендовал вам добавить столбец заказов в вашу базу данных.

var post_data = { order: i, ... };

Другой вариант - отправить один AJAX-запрос, содержащий все данные.

1 голос
/ 04 июля 2010

Если заказ имеет значение, либо отправьте порядковый номер с ним и определите его на сервере, либо отправьте все события одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...