2011-08-06 5 views
1

これは、前の質問「iframeとdiv + jqueryの比較」のフォローアップです。 main.phpのdivにフォーム(form1.php)をロードします。 main.phpをリフレッシュせずにdb内のフォームを実行したいのですが、ここ はmain.phpです:jqueryを使用してdiv内からフォームを実行する(挿入/更新/削除)

<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> 

、これは、クリック、main.phpリフレッシュを提出し、次のURLを表示するには、残念ながら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 
    } 
    ?> 

ためのコードです:MNL /メイン。 php?name = Johnb & birth = us & act = save。また、新しいフィールドが 'mnl_people'テーブルに追加されても、フィールドnamebirthの値はありません。つまり、$ nameと$ birthが空であるようです。誰かが私が間違っていることを私に知らせることができますか?私は間違いなくここに何かを欠いている。ありがとう。

+0

終了スクリプトタグのタイプミスは、「」ではなく「」にする必要があります。 – Chandu

答えて

1

は、その代わりに

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

.liveバージョンの使用を使用し

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

の問題は、あなたがするので、フォームがDOMに存在しないクリックハンドラをアタッチしている瞬間それをajaxでロードします。

+0

ありがとうございます。その一部が機能し、main.phpがリフレッシュされず、divだけがリフレッシュされます。しかし、パラメータ$ nameと$ birthはまだ空です。 もう1つ、私はdelegate()がlive()に優先するというWebサイトを読んでいました。私は正確な理由を覚えていないし、説明はかなり進んだ(私はjqueryの初心者です)。それについてのどんな考え? – JMarc

1

フォームのメソッドをPOSTと宣言していないので、GETメソッドを使用しますが、POSTの値を取得しようとしました。

フォームタグに属性method="POST"を追加するか、$_GET['field_name']を使用して検索してください。

関連する問題