Slyweb
На разработку сайта! Скидки 50%!

JQuery и firefox

Вы можете задавать любые вопросы по jQuery.

JQuery и firefox

Сообщение Виктор » 29 сен 2009, 23:31

Вобщем расчитываю на вашу помощь:
имеется форма
Код: Выделить всё
<form action="index.php" method="post" id="josForm" name="josForm">
 <button type="submit">Отправить</button>
</form>

<script>
   jQuery(document).ready(function(){      
      jQuery('#josForm').submit( function(){
         var entry= true;
         jQuery.getJSON('index.php?task=proverka', { userEntry: entry},
         function(json) {      
            var check =json.note.entry;
            if (check)
               josForm.submit();            
         });         
         return false;
      });      
   });      
</script>

Смысл скрипта в том что происходить проверка с применением Ajax данных и возвращается результат, если положительный то отправляется форма
Так вот этот скрипт работает в Опере и в IE, а в Firefox форма не отправляется на сервер: josForm.submit(); не хочет выполняться.
в чем может быть проблема и как от нее избавиться?
Виктор
 

Re: JQuery и firefox

Сообщение Алекснадр » 30 сен 2009, 12:15

Виктор писал(а):Вобщем расчитываю на вашу помощь:
имеется форма
<form action="index.php" method="post" id="josForm" name="josForm">
<button type="submit">Отправить</button>
</form>

<script>
jQuery(document).ready(function(){
jQuery('#josForm').submit( function(){
var entry= true;
jQuery.getJSON('index.php?task=proverka', { userEntry: entry},
function(json) {
var check =json.note.entry;
if (check)
josForm.submit();
});
return false;
});
});
</script>
Смысл скрипта в том что происходить проверка с применением Ajax данных и возвращается результат, если положительный то отправляется форма
Так вот этот скрипт работает в Опере и в IE, а в Firefox форма не отправляется на сервер: josForm.submit(); не хочет выполняться.
в чем может быть проблема и как от нее избавиться?


Вы неверно используете josForm.submit(); Поскольку josForm является элементом DOM, к элементам в jquery можно обращаться так $("#josForm").submit(); или так josForm = $("#josForm");, а потом josForm.submit();
В общем рабочий код ниже.
Код: Выделить всё
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<form action="index.php" method="post" id="josForm" name="josForm">
<button type="submit">Отправить</button>
</form>

<script>
jQuery(document).ready(function(){
jQuery('button[type=submit]').click(function(){ //Ваша ошибка исправлена так как в FF вызывала бесконечный цикл
var entry= true;
jQuery.getJSON('test.php?task=proverka', { userEntry: entry},
function(json) {
var check =json.name;
if (check)
$("#josForm").submit(); //Ваша ошибка исправлена смотрите http://slyweb.ru/jquerydoc/id.php
});
return false;
});
});
</script>

При условии что test.php будет таким
Код: Выделить всё
<?php
header("Content-type: text/html; charset=UTF-8");
echo json_encode(array('name'=>'name'));
?>

Проверки нет, но для объяснения сгодится. ;)
Алекснадр
 

Re: JQuery и firefox

Сообщение Виктор » 30 сен 2009, 16:29

Спасибо. Теперь совсем другое дело.
Виктор
 

Re: JQuery и firefox

Сообщение rudolf » 01 окт 2009, 15:24

Предыдущий вопрос решился и возник новый:
как можно перегрузить функцию, в которой помещен jQuery.getJSON значением, которое возвращает функция?
function result(){
var entry= true;
jQuery.getJSON('index.php?task=proverka', { userEntry: entry},
function(json) {
var check =json.note.entry;
if (check) // то функция result() должна возвратить true
});
return false;
}

Получается так, что функция не дожидается выполнения скрипта на сервере, и вообще getJSON я как понял не выполняется пока result()- не завершится(если вставить alert(); перед return false; сценарий останавливается ).
rudolf
 
Сообщения: 4
Зарегистрирован: 01 окт 2009, 15:13

Re: JQuery и firefox

Сообщение admin » 01 окт 2009, 18:59

Правильно так:
Код: Выделить всё
jQuery(document).ready(function(){
jQuery('button[type=submit]').click(function(){

function result()
{
var entry= true;
jQuery.getJSON('test.php?task=proverka', { userEntry: entry},
function(json) {
var check =json.name;
if (check){ // если правильно то отправляем
$("#josForm").submit();
}
else // иначе
{
return false;
}
});
}
result(); // Вызывайте функцию до отправки формы, а не после, иначе - как у Вас, функция не успевает быть выполнена.
return false; // Не забывайте прекращать всплывание события submit.
});
});

Ваша ошибка - Функция не успеет выполнится так как отправка формы исполняется раньше.
Код: Выделить всё
function result(){
var entry= true;
jQuery.getJSON('index.php?task=proverka', { userEntry: entry},
function(json) {
var check =json.note.entry;
if (check) // то функция result() должна возвратить true
});
return false;
}

Нужно так
Код: Выделить всё
jQuery(document).ready(function(){
jQuery('button[type=submit]').click(function(){ //Ваша ошибка исправлена так как в FF вызывала бесконечный цикл

function result(){
var entry= true;
jQuery.getJSON('test.php?task=proverka', { userEntry: entry},
function(json) {
var check =json.name;
if (check) // то функция result() должна возвратить true
alert(check);
});
return false;
}
result()
return false;
});
});
admin
Администратор
 
Сообщения: 165
Зарегистрирован: 15 авг 2009, 20:02

Re: JQuery и firefox

Сообщение rudolf » 01 окт 2009, 20:18

Я наверное неправильно задал вопрос...
вообщем вот скрипт
Код: Выделить всё
<input type="button" id="button" value="отправить">
<body>

<script type="text/javascript">
jQuery(document).ready(function(){
   
   jQuery('#button').click(function(){
   var name='Пусто';
   function result(){
      var entry= true;
      
      jQuery.getJSON('example.php', { name:'Ура получилось'},
      function(json){
         name=json.note.name;
         jQuery('#example-4').html('');
         jQuery('#example-4').append(json.note.name);
      });   
      return false;
   }
   result();
   alert (name);// как зделать так, что бы здесь вывести name из getJSON
   });
});
</script>   
        <div class="example cursor" id="example-4"></div>
</body>
</html>


example.php:
Код: Выделить всё
{
   note:{
      name:'<?php echo $_GET['name']; ?>'
   }
}


как в alert (name); вывести значение полученное из getJSON.
rudolf
 
Сообщения: 4
Зарегистрирован: 01 окт 2009, 15:13

Re: JQuery и firefox

Сообщение admin » 02 окт 2009, 02:10

У меня так получилось. По другому можно, но много писать нужно.
Код: Выделить всё
    jQuery(document).ready(function(){
       
       jQuery('#button').click(function(){
       var name='Пусто';
       function result(){
          var entry= true;
         
          jQuery.getJSON('test.php', { name:'Ура получилось'},
          function(json){
             name=json.note.name;
             jQuery('#example-4').html('');
             jQuery('#example-4').append(json.note.name);
             alert (name);// перенесите alert в область видимости функции
          });   
          return false;
       }
       result();
     
       });
    });
admin
Администратор
 
Сообщения: 165
Зарегистрирован: 15 авг 2009, 20:02

Re: JQuery и firefox

Сообщение rudolf » 02 окт 2009, 03:21

в том то и дело, что так не получится...
дело в том что встраиваю функцию уже в готовый скрипт, и функция в которую встроен код должна вернуть значение, которое зависит что вернет getJSON
rudolf
 
Сообщения: 4
Зарегистрирован: 01 окт 2009, 15:13

Re: JQuery и firefox

Сообщение admin » 02 окт 2009, 14:16

Думаю это не плохой вариант.
Код: Выделить всё
 jQuery(document).ready(function(){
       
       jQuery('#button').click(function(){
       var name='Пусто';
  function result(){
          var entry= true;
         
   var rand = $.ajax({type: "Get", url: "test.php", data: "name=Ура получилось", async: false }).responseText;
        jQuery('#example-4').html('');
             jQuery('#example-4').append(rand);
          return rand;
       }
     var name = result();
     alert (name);
       });
    });



Код php
Код: Выделить всё
<?php echo $_GET['name']; ?>
admin
Администратор
 
Сообщения: 165
Зарегистрирован: 15 авг 2009, 20:02

Re: JQuery и firefox

Сообщение rudolf » 02 окт 2009, 18:38

Этот код работает. Спасибо.
Хорошо что вы создали форум по JQuery. Думаю будет востребован. :D
rudolf
 
Сообщения: 4
Зарегистрирован: 01 окт 2009, 15:13

След.

Вернуться в Вопросы по jQuery

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron