Mootools Ajax请求和提交表单的问题

时间:2011-03-02 14:19:46

标签: php javascript html ajax mootools

我有一个包含来自数据库的内容的表。现在我试图实现一种方法(a)从表中删除行(b)“动态”编辑行的内容。 (a)完美地工作(b)让我的头吸烟!

以下是完整的Mootools代码:

    <script type="text/javascript">
window.addEvent('domready', function() {

var eDit = $('edit_hide');
eDit.slide('hide'); 

var del = new Request.HTML(
{
    url: 'fuss_response.php',
    encoding: 'utf-8',
    update: eDit,
    onComplete: function(response)
    {
    eDit.slide('in');
    }
});

$$('input.delete').addEvent( 'click', function(e){
      e.stop();
    var aID = 'delete_', bID = '';
    var deleteID = this.getProperty('id').replace(aID,bID); 
      new MooDialog.Confirm('Soll der Termin gelöscht werden?', function(){
        del.send({data : "id=" + deleteID}); 
      }, function(){
      new MooDialog.Alert('Schon Konfuzius hat gesagt: Erst denken dann handeln!');
      });  
    });

var edit = new Request.HTML(
{
    url: 'fuss_response_edit.php',
    update: eDit,
    encoding: 'utf-8',
    onComplete: function(response)
    {
    $('sst').addEvent( 'click', function(e){
      e.stop();
    safe.send();
    });
    }
});

var safe = new Request.HTML(
{
    url: 'termin_safe.php',
    encoding: 'utf-8',
    update: eDit,
    onComplete: function(response)
    {

    }
});

$$('input.edit').addEvent( 'click', function(e){
      e.stop();
    var aID = 'edit_', bID = '';
    var editID = this.getProperty('id').replace(aID,bID); 
      edit.send({data : "id=" + editID});
      $('edit_hide').slide('toggle');
    });

});
</script>

这里是编辑表单的PHP部分:

<?php

$cKey = mysql_real_escape_string($_POST['id']);

$request = mysql_query("SELECT * FROM fusspflege WHERE ID = '".$cKey."'");
  while ($row = mysql_fetch_object($request))
    {
    $id = $row->ID;
    $name = $row->name;
    $vor = $row->vorname;
    $ort = $row->ort;
    $tel = $row->telefon;
    $mail = $row->email;
    }
echo '<form id="termin_edit" method="post" action="">';
echo '<div><label>Name:</label><input type="text" id="nns" name="name" value="'.$name.'"></div>';
echo '<div><label>Vorname:</label><input type="text" id="nvs" name="vorname" value="'.$vor.'"></div>';
echo '<div><label>Ort:</label><input type="text" id="nos" name="ort" value="'.$ort.'"></div>';
echo '<div><label>Telefon:</label><input type="text" id="nts" name="telefon" value="'.$tel.'"></div>';
echo '<div><label>eMail:</label><input type="text" id="nms" name="email" value="'.$mail.'"></div>';
echo '<input name="id" type="hidden" id="ids" value="'.$id.'"/>';
echo '<input type="button" id="sst" value="Speichern">';
echo '</form>';
?>

并且终止了termin_safe.php的代码

$id = mysql_real_escape_string($_POST['id']);
$na = mysql_real_escape_string($_POST['name']);
$vn = mysql_real_escape_string($_POST['vorname']);
$ort = mysql_real_escape_string($_POST['ort']);
$tel = mysql_real_escape_string($_POST['telefon']);
$em = mysql_real_escape_string($_POST['email']);  
$score = mysql_query("UPDATE fuspflege SET name = '".$na."', vorname = '".$vn."', ort = '".$ort."', telefon = '".$tel."', email = '".$em."' WHERE ID = '".$id."'");

据我所知,请求确实有效,但数据没有更新!我觉得发布的事情有些不对劲 对于任何建议,我将很高兴!

PS一些评论之后:我在这部分看到了问题:

var edit = new Request.HTML(
{
    url: 'fuss_response_edit.php',
    update: eDit,
    encoding: 'utf-8',
    onComplete: function(response)
    {
    $('sst').addEvent( 'click', function(e){
      e.stop();
    safe.send();
    });
    }
});

“编辑”请求打开带有预填充输入字段的表单,然后将单击事件附加到提交按钮,该按钮应在单击时调用新请求。 第三个请求我无法传递输入字段的数据。我试图得到每个字段的值,如下所示:

var name = $('nns').getProperty('value');

以这种方式传递

.send({data : "name=" + name});

到目前为止没有工作

PPS:   按要求从主站点生成html的代码

<?php  $request = mysql_query("SELECT * FROM fusspflege");
  echo '<form id="fusspflege" method="post" action="">';
  echo '<table class="fuss_admin">';
  echo '<tr><th>Name</th><th>Vorname</th><th>Ort</th><th>Telefon</th><th>eMail</th><th>Uhrzeit</th><th>Datum</th><th></th><th></th></tr>';
  echo '<tr><td colspan=8 id="upd"></td></tr>';
  while ($row = mysql_fetch_object($request))
    {
    $id = $row->ID;
    $name = $row->name;
    $vor = $row->vorname;
    $ort = $row->ort;
    $tel = $row->telefon;
    $mail = $row->email;
    $dat = $row->datum;
    $uhr = $row->uhrzeit;

    echo '<tr><td>'.$name.'</td><td>'.$vor.'</td><td>'.$ort.'</td><td>'.$tel.'</td><td>'.$mail.'</td><td>'.$uhr.'</td><td>'.$dat.'</td>';
    echo '<td><input id="delete_'.$id.'" class="delete" type="button" value="X"></td>';
    echo '<td><input id="edit_'.$id.'" class="edit" type="button" value="?"></td>';
    echo '</tr>';
    }
  echo '</table>';
  echo '</form>';
  echo '<div id="edit_hide"></div>';
?>

更新:

       <form action="" method="post" id="termin_edit">
    <div>
        <label>
            Name:
        </label>
        <input type="text" value="NAME" name="name" id="nns">
    </div>
    <div>
        <label>
            Vorname:
        </label>
        <input type="text" value="Marianne" name="vorname" id="nvs">
    </div>
    <div>
        <label>
            Ort:
        </label>
        <input type="text" value="MArkt Wald" name="ort" id="nos">
    </div>
    <div>
        <label>
            Telefon:
        </label>
        <input type="text" value="" name="telefon" id="nts">
    </div>
    <div>
        <label>
            eMail:
        </label>
        <input type="text" value="info@rudolfapotheke.de" name="email" id="nms">
    </div>
    <input type="hidden" value="115" id="ids" name="id">
    <input type="button" value="Speichern" id="sst">
</form>

1 个答案:

答案 0 :(得分:1)

<强>更新

这是基于你给我的表格的mootools脚本应该与你的html一起使用:

$('sst').addEvent('click', function(event) {
    var data;
    event.stop();
    var myInputEl = $$('#termin_edit input');
    for(var i=0; i<myInputEl.length; i++){
        if(i == 0)
            data = myInputEl[i].name + "=" + myInputEl[i].value;
        else
            data += "&" + myInputEl[i].name + "=" + myInputEl[i].value;
    }
    myRequest.send(data);
});

还要为您的请求回调添加警报以进行编辑,以测试ajax是否有效:

    onSuccess: function(responseText) {
        alert("done! " + responseText);
    },
    onFailure: function() {
        alert("failed");
    }

在php端创建一个新的PHP文件,并在其中加入以下内容并使其具有ajax目标:

<?php
print_r($_POST);
?>

Ajax应该在警告框中返回$ _POST数组。