Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用ajax提交表单数据,无需刷新_Php_Jquery_Mysql_Ajax_Forms - Fatal编程技术网

Php 使用ajax提交表单数据,无需刷新

Php 使用ajax提交表单数据,无需刷新,php,jquery,mysql,ajax,forms,Php,Jquery,Mysql,Ajax,Forms,我有一个包含多个表单的页面,可以删除MySQL数据库中的行。表单也从MySQL数据库填充 我正在尝试在不刷新页面的情况下对表单进行sumbit,但是这些行不会从我的数据库中删除 更新: 我最初没有提到包含我动态生成的表单的div 表单基于选择列表中的选项。代码: <form> <h3>Vælg medlem</h3> <select name="users" onchange="showUser(thi

我有一个包含多个表单的页面,可以删除MySQL数据库中的行。表单也从MySQL数据库填充

我正在尝试在不刷新页面的情况下对表单进行sumbit,但是这些行不会从我的数据库中删除

更新: 我最初没有提到包含我动态生成的表单的div

表单基于选择列表中的选项。代码:

      <form>
        <h3>Vælg medlem</h3>
            <select name="users" onchange="showUser(this.value)">
            <?php
            $i = 0;
            while($row = mysql_fetch_array($result))
              { if (!$i++) echo "<option selected='selected'>Vælg medlem</option>" ?>

                <option value="<?php echo $row[medlemmer_id]; ?>"><?php echo $row[medlemmer_navn]; ?></option>

                <?php } $i++; ?>
            </select>
        </form>
用于删除行的php文件:

 <?php
 mysql_connect("#######", "########", "#######") or die(mysql_error());
 mysql_select_db("#######") or die(mysql_error());
 mysql_query("DELETE FROM boder_has_medlemmer WHERE relation_id = ". $_POST['relation_id'] .""); 
 ?>

如果我只是使用一个带有
method=“POST”
action=“delete.php
的表单,它就工作了。这意味着相关行被删除,但页面会刷新

对我的错误有什么建议吗?

更改这行

data: $("#relation_id").val();,
var rel_id = $("#relation_id").val();

或在e.preventDefault()之后;添加此行

data: $("#relation_id").val();,
var rel_id = $("#relation_id").val();

放置

在ajax调用函数之后,更改放置参数的方式

$(function () {

$('#myform2').on('submit', function (e) {

   e.preventDefault();

   var rel_id = $("#relation_id").val();

   $.ajax({
      type: 'post',
      url: 'delete.php',
      data: {
         relation_id: rel_id
      },
      success: function () {
        alert('form was submitted');
      }
    });
    return false;
  });

});

您在控制台中遇到任何错误?如果控制台没有显示任何错误,请查看php错误日志。将错误输出添加到delete.php,看看ajax调用是否真的触发了php。可能是一个简单的路径问题……控制台没有显示任何错误。我如何将错误日志应用于php脚本?似乎没有任何更改事情-但是你让我意识到了一个大括号的错误。没有错误-我不知道如何检查Ajax请求是否真的发出了。对于你来说,记录发生了什么的最简单方法应该是在delete.php mysql\u查询中添加这一行(“插入到某个表名(列名)值('.mysql\u real\u escape\u字符串(print\r($\u POST,true))”);您必须创建一个带有列的表,并在prev代码中替换它们的名称,这应该会将任何post请求保存到您的表中,您可以在js:error(jqXHR,textStatus,errorshorn){console.log(textStatus);}中检查它或添加这个after success函数。您说“在prev代码中替换它们的名称”是什么意思"? 我已经创建了一个表和列,并尝试再次运行它,但没有向tabler添加任何内容<代码>mysql\u查询(“插入错误检查(e1)值('.mysql\u real\u escape\u字符串(print\r($\u POST,true)))”)我猜有一个ajax错误,在js中添加这个after success函数:
error(jqXHR,textStatus,errorhorn){console.log(jqXHR);console.log(textStatus);console.log(errorhorn);}
这将在ajax错误发生时触发,并将错误写入控制台
var rel_id = $("#relation_id").val();
data: {relation_id: rel_id},
return false;
$(function () {

$('#myform2').on('submit', function (e) {

   e.preventDefault();

   var rel_id = $("#relation_id").val();

   $.ajax({
      type: 'post',
      url: 'delete.php',
      data: {
         relation_id: rel_id
      },
      success: function () {
        alert('form was submitted');
      }
    });
    return false;
  });

});