Пожалуйста оголить меня за длинный вопрос ...Ajax вызова перед неловкое положение
Я должен добавить запись один базы данных для одной основной таблицы скажем test
таблицу. После добавления записи в эту таблицу я хочу ее last inserted id
, а затем хочу добавить приблизительно 1000 записей в таблицу транзакций (также отправляя EMAILS на эти 1000 записей), скажем, test_transaction
.
Но эта вторая операция, добавляющая запись в таблицу транзакций, занимает больше секунды, чтобы добавить записи в базу данных. Я использую MVC клиента и мой код выглядит следующим образом ...
public function addtotest()
{
$strSql = "INSERT INTO test ...";
$intId = $this->db->execute($strSql);
foreach($arrTransaction $transact)
{
$strSql = "INSERT INTO test_transaction ...";
$this->db->execute($strSql);
}
echo $intId;
}
Так я хочу поставить test_transaction
записей таблицы в другую в action
, как показано ниже
public function testtrancation()
{
$id = $_REQUEST['id']; //It's understood that I am doing proper validation here
foreach($arrTransaction $transact)
{
$strSql = "INSERT INTO test_transaction ...";
$this->db->execute($strSql);
}
}
Так главный вопрос, я звоню addtotest
действие от a AJAX
, и когда он даст id
в ответ, я хочу позвонить другому AJAX
, который добавит приблизительно 1000
записей в базу данных.
НО Я не хочу нарушать опыт пользователей, позволяя им ждать еще несколько минут за 1000
записей.
- Так что я перезагружаю страницу после того, как запись была добавлена
addtotest
`AJAX '. - Звонок другой
AJAX
звонок вsuccess
изaddtotest
. И после звонка
testtransaction
AJAX
звонок, я перезагружаю свою страницу.$.ajax( { url: SERVER_PATH + 'addtotest', type: 'post', async: true, data: { required_data: required_date }, success:function(data) { alert('Record added successfully.'); //I DO NOT WANT USERS TO WAIT FOR THIS AJAX CALL $.ajax( { url: SERVER_PATH + 'testtransaction', type: 'post', async: true, data: { intId: data.id }, success:function(data) { //DO NOTHING }, }); //I DO NOT WANT USERS TO WAIT FOR THIS AJAX CALL location.reload(); }, });
Но страницы перезагружаются мой AJAX
вызов также получить исчезли без завершения AJAX
запроса.
Так может быть сделано в этом случае? Я хочу получить более подробную информацию, пожалуйста, дайте мне знать.
Я не хочу, чтобы пользователи подождали еще одну запись 1000
(плюс отправка EMAILS этим 1000 записям), которые были внесены в базу данных.
@NeilA, спасибо большое за улучшение вопроса. – NullPointer
Просто рад помочь –
Я никогда не использовал их, но как насчет использования вызова Ajax для [начала cronjob] (http://stackoverflow.com/questions/4421020/use-php-to-create-edit-and- удалить-CRONTAB-заданий)? – Terminus