данные textbox недоступны в переменной post в php и ajax - PullRequest
2 голосов
/ 11 декабря 2010

Я пытаюсь закодировать форму с несколькими текстовыми полями без ссылки на страницу, используя ajax, затем после каждого текстового поля будет ссылка с названием add, которая POST вызывает другой php с именем addnew.php.

В данных addnew.php мы будем добавлены в базу данных (postgres).Но у меня возникает проблема при получении самой переменной post. Для тестирования я добавил предупреждение в сценарии.

Это мой код для формы (я изменю текстовое поле для нескольких, когда оно будет работать нормально)

код сценария

<script type='text/javascript'>
//<![CDATA[
$(window).load(function() {
    jQuery(document).ready(function() {

        jQuery('.add').live('click', function(event) {

            //var da='da='+ $('#da').attr('value');
            //var da = 'test';
            var da = $('form#myform').serialize();
            alert(da);
            $.ajax({
                type: "POST",
                url: "addnew.php",
                data:da,
                success: function(data) {
                    if (data === "ok") {
                        $(this).parent().fadeOut();
                        $('#results').html(data);
                    }
                    else {
                        alert(data);
                    }
                }

            });
        });

    });
});
//]]>
</script>

код формы

<body>
<?php

for ($i=1;$i<2;++$i) {//currently only one textbox for testing purpose

 echo "<form name='myform' id='myform'>";
 echo "<input name='da' type='text' id='da' value='none'>";
 echo "<a href='#' class='add'>Add</a>";
 echo "</form>";
}
?>
<div id="results"><div>
</body>

код addnew.php

<? php
 if( isset($_POST['da']) ) 
 {
   echo (da);
 }
?>

при отображении страницы будет выглядеть следующим образом.

<textbox1 data> <add button>
<textbox1 data> <add button>
<textbox1 data> <add button>
...
<textbox10 data> <add button>

Я пытаюсь

  1. Создать каждое текстовое поле и динамически добавить пару кнопок внутри каждой формы, используя цикл for.(для тестирования я создал только одну пару). Должен ли я иметь форму для каждой пары?
  2. , когда по нажатию кнопки add значение в текстовом поле (#da) должно быть отправлено в addnew.php через ajax.

следующий код отображает данные правильно

alert(da);

, но в файле addnew.php я не получаю $ _POST (['da']).Это означает, что данные не передаются в файл, или в коде Ajax что-то не так, и, наконец, я могу иметь несколько форм с одинаковым идентификатором.Если нет, то как я могу отправить только одно текстовое поле, т.е. перед кнопкой добавления при отправке формы.

Ответы [ 3 ]

1 голос
/ 04 января 2011

Вы всегда можете динамически изменить цель / действие элемента формы;поскольку вы используете jQuery, это будет примерно так:

$ ('# form'). attr ('action', window.location.href);

Это установитформа (с идентификатором «форма»), чтобы иметь целевое действие независимо от того, какой URL страницы.Пока вы передаете второй аргумент в attr (), вы сбрасываете значение - это работает в основном НИЧЕГО (вы можете изменить ссылку href и т. Д. Все на лету)

0 голосов
/ 28 декабря 2010

Я считаю, что $ (window) .load () не будет работать.метод загрузки JQuery использует ajax для получения данных из URL-адреса, причем первым аргументом метода загрузки является URL-адрес, а затем он может выполнить функцию oncomplete после завершения загрузки ответа ajax в вызывающий элемент.похоже, что вы только что добавили функцию oncomplete для метода load, но не URL для ajaxed.я ошибаюсь?см. http://api.jquery.com/load/

Я не до конца продумал это, но вы можете просто удалить этот первый уровень ($ (window) .load ()) и посмотреть, что произойдет потом.если вы это сделаете, то, похоже, что код добавит обработчики кликов, когда страница будет «готова».

0 голосов
/ 12 декабря 2010

Нет «отправить». Замените элемент клика:

<a href="#" class="add">Add</a>

с кнопкой отправки:

<input type="submit" class="add" value="Add" />

или

<a href="#" class="add" onclick="this.form.submit();">Add</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...