Запустите форму (вставьте / обновите / удалите) из div, используя jquery - PullRequest
1 голос
/ 06 августа 2011

Это продолжение предыдущего вопроса: «iframe против div + jquery».Я загружаю форму (form1.php) в div main.php.Я хочу иметь возможность запускать форму в div без обновления main.php для заполнения БД.Вот main.php:

    <html>
    <head>
    <script type="text/javascript" src="javascript/update-div.js"></script>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script>
    $(document).ready(function() {
    $("#submit_btn").click(function(e) {
        e.preventDefault();
        $.post('form1.php', $("#form1").serialize(), function(result) { 
            $("#fc").html(result); });
        });
    </scrip>
    </head>
    <body leftmargin="0px" topmargin="0px" marginheight="0px" marginwidth="0px" bgcolor="#FFFFFF">
    <a href="javascript:ajaxpage('form1.php','fc')">form1</a>
    <br>
    <div id="fc"></div>
    </body>
    </html>

, и это код для form1.php

    <?php
    $link = mysql_connect('localhost', 'login', 'pwd');
    if (!$link) {die('Not connected : ' . mysql_error());}
    $db_selected = mysql_select_db('db_name');
    $name = strtoupper($_POST['name']);
    $birth = strtoupper($_POST['birth']);
    $act = $_POST['act'];
    if($act == "save"){
    $query="INSERT INTO `mnl_people` ( `name` , `birth`) VALUES ('$name', '$birth')";
    mysql_query($query);
    $idalbum=mysql_insert_id();
    }
    if(!empty($name)){
    $html = "<p>Your name: <b>".$name."</b></p>";
    $html .= "<p>Your birthplace: <b>".$birth."</b></p>";   
    echo("$html");
    }
    else{ ?>
    <form name="form1" enctype='multipart/form-data'>
    Name <input type='text' name='name' value=""><br>
    <br/>
    <br/>
    Birthplace : <input type="text" name="birth"><br/>

    <input type='submit' name='act' class='submit' value='save' id="submit_btn"/>
    </form>
    <?php
    }
    ?>

К сожалению, при нажатии кнопки submit файл main.php обновляется и отображает следующий URL: mnl/main.php?name=Johnb&birth=us&act=save.Кроме того, несмотря на то, что новое поле добавлено в таблицу 'mnl_people', значения для полей name и birth отсутствуют, т.е. кажется, что $ name и $ birth пусты.Может ли кто-нибудь сказать мне, что я делаю неправильно?Я определенно что-то здесь упускаю.Спасибо.

Ответы [ 2 ]

1 голос
/ 07 августа 2011

Вы не объявили метод вашей формы как POST, поэтому он использует метод GET, но вы пытаетесь получить значения POST.

Либо добавьте атрибут method="POST" всвой тег формы или используйте $_GET['field_name'], чтобы получить его.

1 голос
/ 06 августа 2011

Используйте версию .live , поэтому вместо

 $("#submit_btn").click(function(e) {

Использование

 $("#submit_btn").live('click',function(e) {

Проблема в том, что в момент, когда вы присоединяете обработчик кликов, форма не существует в DOM, так как вы загружаете ее с помощью ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...