Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.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
Javascript Php没有正确接收我表单中的数据_Javascript_Php_Html_Ajax - Fatal编程技术网

Javascript Php没有正确接收我表单中的数据

Javascript Php没有正确接收我表单中的数据,javascript,php,html,ajax,Javascript,Php,Html,Ajax,我使用Ajax将表单的值发送到php文件,并将其插入数据库,具体取决于执行url的按钮的操作, 在本例中是insert_shirt.php,但它似乎不起作用,因为它不会发送表单中的数据,就像表单完全为空一样 HTML <form method="post" id="form_shirt"> ID: <br> <input type="hidden" name="id_shirt" id="id_shirt" class="form-control">

我使用Ajax将表单的值发送到php文件,并将其插入数据库,具体取决于执行url的按钮的操作, 在本例中是insert_shirt.php,但它似乎不起作用,因为它不会发送表单中的数据,就像表单完全为空一样

HTML

<form method="post" id="form_shirt">
  ID:
  <br>
  <input type="hidden" name="id_shirt" id="id_shirt" class="form-control"> Name:
  <br>
  <input type="text" name="name_shirt" id="name_shirt" class="form-control" required="required"> Price:
  <br>
  <input type="text" name="price_shirt" id="price_shirt" class="form-control" required="required">

  <button id="insert_shirt" class="submit" name="btninsert">INSERT</button>

</form>
PHP

<?php

$connect = mysqli_connect("localhost", "root", "", "shirts");

 $output = '';
    $name_shirt = mysqli_real_escape_string($connect, $_POST["name_shirt"]);  
    $price_shirt = mysqli_real_escape_string($connect, $_POST["price_shirt"]);  

    $query = "INSERT into shirts ( name, price)
    VALUES ('$name_shirt','$price_shirt') ";
    if(mysqli_query($connect, $query))
    {
     $output .= '<label class="text-success">Data Inserted</label>';
     $select_query = "SELECT id_shirt, name, price FROM shirts";
     $result = mysqli_query($connect, $select_query);
     $output .= '
      <table id="shirts" class="table table-bordered">  
                   <thead>
                    <tr>  
                        <th>ID</th>
                        <th>NAME</th>
                        <th>PRICE</th>
                    </tr>
</thead>
     ';
     while($row = mysqli_fetch_array($result))
     {
      $output .= '
       <tr>  
       <tbody>
                         <td>' . $row["id_shirt"] . '</td>
                         <td>' . $row["name"] . '</td>
                         <td>' . $row["price"] . '</td>
                    </tr>
                    </tbody>
      ';
     }
     $output .= '</table>';
    }
    echo $output;

?>

Set
contentType:“application/x-www-form-urlencoded;charset=UTF-8”
,如果您的请求中未包含该值,则该值为默认值。您正在将其设置为
false
,这可能是您的
$\u POST
无法看到您的表单数据的原因。

设置
contentType:“application/x-www-form-urlencoded;charset=UTF-8”
,如果您没有将其包含在请求中,这是默认值。您正在将其设置为
false
,这可能是您的
$\u POST
无法看到表单数据的原因。

尝试使用类似于以下的ajax.POST方法 并确保在表单标记中包含action=“{your php file}”

$(document).ready(function() {
  $('.submit').on("click", function() {
    var id = $('#id_shirt').val();
    var name = $('#name_shirt').val();
    var price = $('#price_shirt').val();
    $.post("{your php file}",
        {
          id_shirt: id,
          name_shirt: name,
          price_shirt: price,
        },
        function(data,status){
            $('#form_shirt')[0].reset();
            $('#table_shirt').html(data);
        });
    });
  });
});
这里是指向ajax.post和.get的w3手册的链接

试着像这样使用ajax.post方法 并确保在表单标记中包含action=“{your php file}”

$(document).ready(function() {
  $('.submit').on("click", function() {
    var id = $('#id_shirt').val();
    var name = $('#name_shirt').val();
    var price = $('#price_shirt').val();
    $.post("{your php file}",
        {
          id_shirt: id,
          name_shirt: name,
          price_shirt: price,
        },
        function(data,status){
            $('#form_shirt')[0].reset();
            $('#table_shirt').html(data);
        });
    });
  });
});
这里是指向ajax.post和.get的w3手册的链接

我记得看到您发布了一个与此源代码相关的问题,但我也注意到在您之前的问题中,php文件名有所不同。这里您使用的是
insert\u shirt.php
,但在前面的问题中,您使用的是
insert\u shirts.php
,因此我想知道,如果在文件名insert\u shirts.php中缺少s,这可能是一个简单的打字错误吗?当您发出此请求时,您在Chrome developer中看到了什么。这是一个POST请求,但您发送的数据格式为id\u shirt=&name\u shirt=12.99&price\u shirt=shirt,这是您通常通过GET请求发送的格式。只是好奇。@JarekKulikowski所以。。如果我改变了所有的POST请求,那么它应该可以工作吗?你可以试试。如果服务器正在接收请求并且期望GET,那么它应该。啊,等等。在你的PHP代码中,你期待着一篇文章。也许如果你把它改为_GET.@NewToJS,那是因为当我发布我的问题时,我试图简化代码,也许我无意中删除了一个sI,记得看到你发布了一个与此源代码相关的问题,但我也注意到在你之前的问题中,php文件名是不同的。这里您使用的是
insert\u shirt.php
,但在前面的问题中,您使用的是
insert\u shirts.php
,因此我想知道,如果在文件名insert\u shirts.php中缺少s,这可能是一个简单的打字错误吗?当您发出此请求时,您在Chrome developer中看到了什么。这是一个POST请求,但您发送的数据格式为id\u shirt=&name\u shirt=12.99&price\u shirt=shirt,这是您通常通过GET请求发送的格式。只是好奇。@JarekKulikowski所以。。如果我改变了所有的POST请求,那么它应该可以工作吗?你可以试试。如果服务器正在接收请求并且期望GET,那么它应该。啊,等等。在你的PHP代码中,你期待着一篇文章。也许如果你把它改为_GET.@NewToJS,那是因为当我发布我的问题时,我试图简化代码,也许我无意中删除了一个关于你答案的标记,但在我添加了这个标记后,仍然发生同样的事情,它不会插入:/Look-at-Dev-tools->Network选项卡。您看到您的请求到达服务器了吗?是的,请求正在到达服务器,它向我显示状态200OK,现在尝试
var\u dump($\u POST)
。在开发工具网络选项卡上,查看请求响应。它应该显示我在开发工具网络选项卡中发送的值?因为在我尝试使用
var\u dump($\u POST)
之后,我看到的唯一一件事与之前一样,名称:insert\u shirt.php,状态:200键入:xhrtanks以获取答案,但在我添加了仍然发生同样事情的内容后,它不会插入:/Look at Dev tools->Network选项卡。您看到您的请求到达服务器了吗?是的,请求正在到达服务器,它向我显示状态200OK,现在尝试
var\u dump($\u POST)
。在开发工具网络选项卡上,查看请求响应。它应该显示我在开发工具网络选项卡中发送的值?因为在我尝试使用
var\u dump($\u POST)
之后,唯一显示给我的是与之前相同的东西,名称:insert\u shirt.php,状态:200 type:xhr