2015-08-24 4 views
0

Мне нужно вызвать определенный PHP-скрипт на моем сервере несколько раз. Поскольку каждый вызов займет некоторое время (например, около 0,5 секунд), и каждый вызов не зависит друг от друга, я хочу вызвать сценарии одновременно. Прямо сейчас, у меня есть что-то вроде этого:Параллельные звонки Ajax?

$(document).ready(function() { 

    $.ajax({ 
     url: 'main.php', 
     method: 'POST', 
     data: { foo: 'foo' }, 
     success: function(result) { 
     console.log(result); 
     } 
    }); 

    $.ajax({ 
     url: 'main.php', 
     method: 'POST', 
     data: { bar: 'bar' }, 
     success: function(result) { 
     console.log(result); 
     } 
    }); 

}); 

Вместо того, чтобы эти вызовы последовательно, я хочу сделать их одновременно. Как мне это сделать?

+1

Что не совпадает с тем, что вы показали? Невозможно достичь двух независимых вызовов рядом с тем, который вы используете. –

+0

Они будут вызываться в то же время, что и сейчас. – tymeJV

+1

ajax асинхронен! Посмотрите на свою сеть в dev-инструментах, увидите, что они параллельны. – charlietfl

ответ

1

Не уверен, что проблема, которую Вы испытываете, но вы являются делает одновременно AJAX звонки, потому что Jquery по умолчанию для async: true. Если он по умолчанию равен false, тогда его можно было бы назвать SJAX lol

Одной из проблем, которые могут возникнуть, может быть блокировка обработки сеанса.

Если main.php использует session_start(), то он просто ставит очередь на запрос панели до тех пор, пока не закончится foo. Или вы можете вручную позвонить session_write_close(), чтобы избежать блокировки.

0

Установите асинхронный = true для вызовов AJAX, чтобы сделать их асинхронными.

$.ajax({ 
    async: "true", 
     url: 'main.php', 
     method: 'POST', 
     data: { foo: 'foo' }, 
     success: function(result) { 
     console.log(result); 
     } 
    }); 

    $.ajax({ 
    async: "true", 
     url: 'main.php', 
     method: 'POST', 
     data: { bar: 'bar' }, 
     success: function(result) { 
     console.log(result); 
     } 
    }); 
+2

'async' по умолчанию имеет значение true ... – tymeJV

0

Запросы Ajax являются асинхронными по своей природе. Основываясь на вашем примере, каждый из вызовов будет послан , не дожидаясь ответа сервера

+0

Это невозможно. Нам нужно будет увидеть код PHP. – MonkeyZeus

+1

Как бэкэнд PHP влияет на отправку нескольких запросов клиенту? –

+0

Он может иметь эффект пульсации и привести к достижению клиентом [пределов параллельных подключений] (http://stackoverflow.com/questions/985431/max-parallel-http-connections-in-a-browser). – MonkeyZeus

Смежные вопросы