0

抱歉,我很难提出正确的问题,因为我真的不知道自己在做什么......我有一个表格,其中包含一个默认创建 3 条不同行的 php:

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

-->NeuerLieferschein_Teilespalten.php包含这个循环,它在开头创建 3 个不同的行,其中包含不同的字段,称为kunde1, kunde2, kunde3

<?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如果点击了某些东西,然后是带有选项的第五行。

我在 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 脚本,始终只会添加一个字段。

这就是为什么我会改变

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()你总是会替换你之前加载的内容。这意味着如果您更改一次并想再次更改它,目前它不会保留更改。由于您一次只添加一行没有意义,所以.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.php一下。name="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 回答
0

在分析了这个问题很长时间后,我现在发现它适用于 Mozilla Firefox 20.0.1,但不适用于我正在使用的旧 Windows XP 机器的最新版本 Internet Explorer 8.0.6。我能做些什么来使这段代码也适用于 IE8 吗?是关于我在 PHP 和 HTML 中的表结构还是关于响应本身?

这是我的 div 在表格中的位置:

<tr>
<td colspan=5>
<div id="VariableZeilen" class="VariableZeilen">
<!-- More Lines should appear here --> 
</div>
</td>
</tr>

并且 php 正在添加更多的表结构,如下所示:

for($i=$von; $i < ($bis+1); $i++)
{
echo '<tr>';
echo '<th rowspan="2" align=left>Bezeichnung: <input type="text" ';
echo 'name="Teileposition'.$i.'" id="Teileposition'.$i.'" size="50"></th>';
echo '<th rowspan="2"> Nettopreis: <input type="text" onblur="Calculatenettobrutto('.$i.');"';
echo 'name="Netto'.$i.'" id="Netto'.$i.'" size="3"></th>';
echo '<th rowspan="2">Brutto: <input type="text" ';
echo 'name="Brutto'.$i.'" size="3" id="Brutto'.$i.'"/></th>';
echo '<td>';
//Jetzt den Nachnamen auswählen
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();


    echo '</td>';
    echo '<th rowspan="2">';
    echo '<select name="Teilezurodnung" id="Teilezurodnung" size="1">';
    echo '<option value="Kunde" selected >Kunde</option>';
    echo '<option value="Lager" >Lager</option>';
    echo '<option value="Zurück" >Zurück</option>';
    echo '<option value="Falsch" >Falsch</option>';

    echo '</th>';
    echo '<tr><td>';
    //Je nach Nachname sollten hier die Autos erscheinen
    echo '<select name="auto'.$i.'" class="auto'.$i.'"><option selected="selected">--Wähle das Auto--</option></select>';
    echo '</td></tr>';
    echo '</tr>';
于 2013-05-21T11:07:48.617 回答