Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.02.2014, 00:18
Аспирант
Отправить личное сообщение для ninzzo Посмотреть профиль Найти все сообщения от ninzzo
 
Регистрация: 21.05.2013
Сообщений: 42

ajax запрос небольшая проблемка
есть index.php

<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js">
</script>

<form id="form_id1" method="post" action="">
<input type="hidden" name="name" id="ip_tv1" value="vasya">
</form>
<script type="text/javascript">
window.setInterval('AjaxFormRequest1(\'ajaxf\', \'form_id1\', \'1.php\');', 2000);
          
            function AjaxFormRequest1(result_id,form_id,url) {
                jQuery.ajax({
                    url:     url, //Адрес подгружаемой страницы
                    type:     "POST", //Тип запроса
                    dataType: "html", //Тип данных
                    data: jQuery("#"+form_id).serialize(), 
                    success: function(response) { //Если все нормально
                    document.getElementById(result_id).innerHTML = response;
					
                },
                error: function(response) { //Если ошибка
                document.getElementById(result_id).innerHTML = "Ошибка при отправке формы";
                }
             });
			
			 
        }
   </script>
<div id="ajaxf"></div>


есть 1.php

<?php
if($_POST['name'] == 'vasya'){echo 'Все работает отлично';}
?>

<script>
alert("Privet");
</script>



Открываю страницу и через 2 секунды получаю надпись:
"Все работает отлично" но куда дела ALERT??? Я хочу так же что бы вылетал алерт и писал "Privet"

Подскажите в чем проблема и как сделать так что бы работало?
Ответить с цитированием
  #2 (permalink)  
Старый 26.02.2014, 00:23
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Все дело в этой строчке:
Сообщение от ninzzo
document.getElementById(result_id).innerHTML = response
Скрипт, вставленный через innerHTML, не сработает.

Почему ты не поместишь свой алерт прямо в index.php?
Сообщение от ninzzo
setInterval('AjaxFormRequest1(\'ajaxf\', \'form_id1\', \'1.php\');', 2000);
Надо так писать:
setInterval(function(){
    AjaxFormRequest1('ajaxf', 'form_id1', '1.php');
}, 2000);
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 26.02.2014, 02:05
Аспирант
Отправить личное сообщение для ninzzo Посмотреть профиль Найти все сообщения от ninzzo
 
Регистрация: 21.05.2013
Сообщений: 42

Цитата:
Почему ты не поместишь свой алерт прямо в index.php?
потому что дело не в этом alert а в других мега сложных js скриптах. Я хочу узнать корень проблемы.

Цитата:
Скрипт, вставленный через innerHTML, не сработает.
подскажите как сделать что бы сработало.


вообщем задача вставить в <div id="more">СЮДА</div> все содержимое другой страницы. Это реально?

Последний раз редактировалось ninzzo, 26.02.2014 в 02:15.
Ответить с цитированием
  #4 (permalink)  
Старый 26.02.2014, 12:18
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

не рекомендую использовать setInterval с малым периодом вызова для аякс-запросов.
Может сложиться такая ситуация, когда ответ еще не пришел, а сетИнтервал лупит следующий запрос и получится каша.
Ответить с цитированием
  #5 (permalink)  
Старый 26.02.2014, 13:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от deivan
Может сложиться такая ситуация, когда ответ еще не пришел, а сетИнтервал лупит следующий запрос и получится каша.
Вывод - не делай кашу, она и не получится
Т.ч. "сетИнтервал" не будет виноват...
Ответить с цитированием
  #6 (permalink)  
Старый 26.02.2014, 15:40
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

Are you sure?..

1. Стартует скрипт, пошел запрос №1 с данными Д1 к внешнепу скрипту.
2. В это время где-то на магистральных роутерах случился негаразд и запрос начал блуждать.
3. Не получив ответа, сет интервал бьет запрос №2 с данными Д2, которые категорично отличаются от Д1 и требуют смены страницы
4. Приходит ответ от запроса №1, но он не знает, что данные Д2 изменили ситуацию в корне, поэтому скрипт выполняет действие, которое выполнять уже не нужно.
5. получаем неверное поведение приложения, и как следствие - коррапт данныз базы, левый редирект и т.д.
Ответить с цитированием
  #7 (permalink)  
Старый 26.02.2014, 15:43
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

deivan, не нужно придумывать фигню. Она и так получится. Ты придумывай варианты при которых фигня никогда не получится.
И нечего на методы пенять...
Ответить с цитированием
  #8 (permalink)  
Старый 26.02.2014, 16:00
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

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

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

Ну, а если скрипт нужен для какой-то информационной требухи типа количества юзеров он-лайн -- то да, и сет-интервал сойдет.
Ответить с цитированием
  #9 (permalink)  
Старый 26.02.2014, 16:03
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от deivan
Как бэ, ничего не придумываю.
Любой алгоритм придумывает разработчик. Вот если он придумает фигню - тогда ему ничего не остается, как пенять на "суровые реалии асинхронного программирования".

И при написании фигни бОльшие таймауты в setInterval() тебя не спасут...
Ответить с цитированием
  #10 (permalink)  
Старый 26.02.2014, 20:17
Аспирант
Отправить личное сообщение для ninzzo Посмотреть профиль Найти все сообщения от ninzzo
 
Регистрация: 21.05.2013
Сообщений: 42

Ребят, не нужно спорить использовать или не использовать метод. Меня интересует как на моей странице 1 вывести страницу 2 каждые несколько секунд. СО ВСЕМИ JS !!!!
Хелп!!! KSA помоги ты же можешь я знаю)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax запрос на ютуб masterdle Элементы интерфейса 2 16.07.2013 15:32
AJAX запрос в Internet Explorer срабатывает через раз nikolayseo jQuery 5 13.11.2012 00:13
Как можно кешировать Ajax запрос ? saturn AJAX и COMET 5 27.10.2012 14:48
проблемка с объектом, POST запрос Ajax zercs jQuery 1 24.04.2011 19:06
ajax запрос с подгружемным js HelpeR AJAX и COMET 1 27.10.2008 12:44