0 из 0

Создать тему
0

Прошу помощи у супер сообщества супергиперпуперпрограммистов.

<?php
  echo '
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

<script>
function FormClick (objButton) {
  $(\'#myDiv\').html(\'Загрузка…\');
  var str = $("#myForm").serialize();
  $.post("1.php", str, function(data) {
    $("#myDiv").html(data);
  });
  $(\'#text\').html(str);
  return false;
} 
</script>  
';

  if($_POST['text'])
    {
      echo 'text: '.$_POST['text'];
    }
  else
    echo '
          <form id="myForm">
          <input type="text" name="text" id="text">
          <input onclick="FormClick(this)" type="button" value="ok">
          </form>
          <div id="myDiv"></div>';
?>

Есть 1.php, содержащий код, опубликованный выше.

Вопрос заключается в том, что я не могу нигде найти, как реализовать обработку формы, по нажатию на клавишу Enter, то есть так, как форма обрабатывается обычно. В моем же примере, при нажатии кнопки Enter происходит обычный GET запрос.


denvikkom 23:55 - 19.12.2009

Комментарии

Всего 22 комментария

Войдите или зарегистрируйтесь чтобы оставлять комментарии

Комментарий снят с публикации
0

А нет такого, чтобы и кнопка осталась рабочей, кроме способа не удалять для неё обработчик. Может необходимо что-то в функции поменять?

Комментарий снят с публикации
0
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
    
<form id="input">
<input type="text" name="text" id="text" />
<input type="submit" value="Go!" class="form_b"/>
</form>
<div id="output"></div>

<script type="text/javascript">
 jQuery(function($) { 
  $("#input").submit( function(){
    $("#output").html("Загрузка...");
    var str = $("#input").serialize();
    $.post("2.php", str, function(data) {
      $("#output").html(data);
    });
  $("#text").html(str);
  return false;
  });
 })
</script>

2.php

<?php
if($_POST['text'])
 echo 'text: '.$_POST['text'];
?>

Почему IE не хочет нормально это воспринимать. В этом браузере нифига не работает.

0
<form id="myForm">

заменим на

<form id="myForm" method="POST">

По энтеру будет происходить POST запрос. И все будут счастливы.

Комментарий снят с публикации
0

не ко мне вопрос Happy

хотя если делать через $.post, то да

<script>
function FormSubmit()
{
   $.post("2.php", input, function(data) {
      $("#output").html(data);
    });
    return false;
}
</script>

<form id="myForm" onsubmit="return FormSubmit(this)">
0

Так я тоже пробовал. нифига в IE не работает.

0

http://chat.sampo.ru/ в твоём ие работает? там сделано так же, см функцию "sendMessage()" в longchat.js

0

работает... я, блин, это потеря-потерь

0

А если ивенты заюзать джикверийные? В форме указать POST надо.

$("form#submit").submit(function() { 
        $.ajax({  
            type: "POST",  
            url: "ajax.php",  
            data: блаблабла,
            success: function(){  
                блаблабла 
            }  
        });  
});
0

тогда в моём случае надо что-то такое сделать:

0

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

0

причём тут ивенты?

0

использовать jquery - так в его же стиле. иначе не надо его трогать, я считаю.

0

так при чём тут ивенты? ) дописать $("#form").onsubmit ?

0

ну ни при чём, да... просто мне сам стиль не понравился.

0

Это не тема

0

Вопрос по jQuery.

       var str = $("#short-form").serialize();
       $.get("do-short.php", str, function(data) {
          alert(data);
       });

такое рабоатет

       var str = $("#short-form").serialize();
       $.post("do-short.php", str, function(data) {
          alert(data);
       });

такое работает

       var str = $("#short-form").serialize();
       $.post("/doshort/", str, function(data) {
          alert(data);
       });

такое работает, т.к. в .htaccess сделана соответствующая запись RewriteRule ^doshort/(.*)$ short.php?a=$1 [L]

       var str = $("#short-form").serialize();
       $.get("/doshort/", str, function(data) {
          alert(data);
       });

а вот это уже не работает.

Почему такое может быть?

И еще сразу вопрос, во время ответа от сервера я получаю JSON массив, как мне вывести определенный элемент (попытки вида data.a и т.д не получаются)? Использовал .getJSON (тут data.a работает нормально), но такая же проблема с /doshort/ - не работает.

0

Как вариант - воспользуйтесь расширением для Firefox - Live HTTP Headers и посмотрите кто и что отсылает.
Если нужно парсить ответ, который представлен в виде JSON, то загляните вот сюда - http://www.json.org/js.html
Но на самом деле лучше использовать готовый вариант в jQuery, само умеет преобразовывать текстовый ответ в объект.

0

Цитата:
лучше использовать готовый вариант в jQuery, само умеет преобразовывать текстовый ответ в объект.
Это что имеется в виду?

0
$.post("test.php", { "func": "getNameAndTime" },
   function(data){
     alert(data.name); // John
     console.log(data.time); //  2pm
   }, "json");

Войдите или зарегистрируйтесь чтобы оставлять комментарии

Наверх