0

申し訳ありませんが、自分が何をしているのかよくわからないため、正しい質問をするのは非常に困難です...デフォルトで3つの異なる行を作成するphpを含むフォームがあります。

<form method="GET" name="NeuerLieferschein" action="Teileposten_INSERT.php">
<?PHP
    include ("NeuerLieferschein_Teilespalten.php");
?>

--> 、、NeuerLieferschein_Teilespalten.phpと呼ばれる異なるフィールドを持つ 3 つの異なる行を最初に作成するこのループが含まれています。kunde1kunde2kunde3

<?PHP
    if(isset($_POST['von']))
        {
        $von=trim($_POST['von']);
        $bis=$von;
        }
    else 
        {
        $von=1;
        $bis=3;
        }
for($i=$von; $i < ($bis+1); $i++)
    {
        require_once("DBFunctions.php");
        DBConnect();
        $sql="SELECT distinct Nachname, ';' FROM Kunde order by Nachname asc";
        $db->SetFetchMode(ADODB_FETCH_NUM);
        $Nachnamen=$db->Execute($sql);  
        echo '<select name="kunde'.$i.'" id="kunde'.$i.'" class="kunde'.$i.'" onclick="selectkunde('.$i.')" >';
        echo'<option selected="selected"> </option>';
        while (!$Nachnamen->EOF)
            {
            $Nachnamenzeile=($Nachnamen->fields);
            echo'<option value='.$Nachnamenzeile[0].'>'.$Nachnamenzeile[0].'</option>';
            $Nachnamen->MoveNext();
            }

        echo '</select> <br/>';
        DBClose();

これはうまくいきます。kunde4ボタンがクリックされた場合、オプションIDで新しい行を作成したいと思います。そして、kunde5何かがクリックされた場合のオプション付きの 5 行目。

html ページに以下を追加しました。

<div id="VariableZeilen" name="VariableZeilen" class="VariableZeilen">
    <p id="VariableZeilen" name="VariableZeilen" class="VariableZeilen">
    <!-- ADD NEW LINES HERE -->
    </p>
    </div>
    <tr>
    <td colspan=3>Zeilen erweitern auf<input id="clicked" size="4" onfocus="this.blur();" onclick="mehrTeile();" value="4">

そしてこれをJavascriptとして:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
var clickCount = 4;
function documentClick()
{
    document.getElementById('clicked').value = ++clickCount;
    return clickCount
}
document.onclick = documentClick;
function mehrTeile()
{
var von=document.getElementById('clicked').value;

var dataString = 'von='+ von;
alert ( ( dataString ) );
$.ajax
({
type: "POST",
url: "NeuerLieferschein_Teilespalten.php",
data: dataString,
cache: false,
complete: function (html) {
        //I get this alert, so I come so far:
        alert("ajax completed ");
        //This should show the output in the html section but nothing happens
    $(".VariableZeilen").html(html); 

      }
});
return false;  
}
</script>

これで、クリックするたびにアラートで dataString がカウントアップされていることがわかります。NeuerLieferschein_Teilespalten.phpしかし、私ができないのは、私のphpコンテンツを表示することです<p id=VariableZeilen>

私はJavascriptに非常に慣れていないので、非常にばかげた質問かもしれませんが、フォーラムで検索しても正しい答えが得られませんでした. 誰かがダミーのためにこれをコーディングするのを手伝ってくれたらとてもうれしいです。ありがとう/イヴ

4

2 に答える 2

0

NeuerLieferschein_Teilespalten.phpあなたが正しく機能していると仮定すると、いくつかの変更をお勧めします。入力フィールドがありますが、値に関係なく、PHP スクリプトのために追加されるフィールドは常に 1 つだけです。

これが私が変わる理由です

Zeilen erweitern auf<input id="clicked" size="4" onfocus="this.blur();" onclick="mehrTeile();" value="4">

次のようなものに

<input type="button" value="Eine Zeile hinzuf&uuml;gen" onclick="mehrTeile();" />

入力フィールドがなく、ボタンしかないので、JavaScript 変数を使用してフィールドの数を追跡できます。

function mehrTeile()
{
    var dataString = 'von=' + clickCount; // we will increase clickCount later

次に、スクリプトの主要部分である ajax に進みます。completeを使用する必要がある代わりに、success使用する.html()場合は、以前にロードしたコンテンツを常に置き換えます。つまり、一度変更してもう一度変更したい場合、現時点では変更が保持されません。一度に 1 行しか追加しないので意味がないので、.append()より賢明です。

これはすべて次のことにつながります

<form method="GET" name="NeuerLieferschein" action="Teileposten_INSERT.php">
<?PHP
    include ("NeuerLieferschein_Teilespalten.php");
?>
<p id="VariableZeilen"></p>
<input type="button" value="Eine Zeile hinzuf&uuml;gen" onclick="mehrTeile();" />

そしてこの JavaScript

var clickCount = 4;
function mehrTeile()
{
    var dataString = "von="+clickCount;
    $.ajax({
        type: "POST",
        url: "NeuerLieferschein_Teilespalten.php",
        data: dataString,
        success: function(msg)
        {
            $("div#VariableZeilen").append(msg);
            clickCount++;
        }
    });
}

少し編集することもお勧めしますNeuerLieferschein_Teilespalten.phpname="kunde'.$i.'"最終的にフィールドの量が不明になり、スムーズにチェックできないことを意味します。を使用するname="kunde[]"と、すべての要素の配列が取得されます。

name="kunde'.$i.'"
-> $_POST['kunde1'] = ?
   $_POST['kunde2'] = ?
   $_POST['kunde3'] = ?
   $_POST['kunde4'] = ?

name="kunde[]"
-> $_POST['kunde'] = array(
   ?,
   ?,
   ?,
   ?,
)

単純?に任意の値を開いたままにします

于 2013-05-20T19:30:08.593 に答える