javascript html输入字段数据与jquery一起发送到PHP不工作

thtygnil  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(192)
$(".save_form_email").on('click', function() {
    var pocet = $('#save__cena').val();
  console.table(pocet);
  $.ajax({
    url: '/modules/mod_custom_extended/tmpl/default.php',
    type: 'POST',
    data: {
      pocet: pocet
    },
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    success: function(response) {
      console.table(response);
    },
    error: function(jqXHR, textStatus, errorThrown) {
      console.log('AJAX request failed: ' + textStatus + ', ' + errorThrown);
    }
  });

});

这就是PHP

<?php
if (isset($_POST['pocet'])) {
  $temp_pocet = $_POST['pocet'];
}
?>

这是我试图发送的HTML输入字段的值与ID“保存__cena”的PHP,所以我可以稍后使用这个价格将其发送到条纹。目前我在PHP变量temp_pocet中没有任何东西

icnyk63a

icnyk63a1#

当您使用 AJAX 请求向php发送JSON数据时,该数据在$_POST超全局中不可访问。您需要从php://input读取,而不是像这样:

<?php
$form_data = json_decode(file_get_contents('php://input'));

$_POST仅适用于Content-Type设置为application/x-www-form-urlencodedmultipart/form-data的数据,而不是application/json
附加信息:this stack overflow answer
编辑
如果您还计划从php脚本返回json响应,那么您应该将处理 AJAX 请求的代码移动到一个单独的php文件中,该文件不与任何html代码混合。这是为了防止html字符与json响应沿着发送,并导致其损坏。
哦,你还应该把你的内容类型头改为application/json

vhipe2zx

vhipe2zx2#

试试这个
使用警报进行调试。

$(".save_form_email").on('click', function() {
        var pocet = $('#save__cena').val();
      alert("Step 1");
      console.table(pocet);
      $.ajax({
        url: '/modules/mod_custom_extended/tmpl/default.php',
        type: 'POST',
        data: {
          // I change this line
          // pocet: pocet -> Original
          "pocet": pocet // updated
        },
        contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
        success: function(response) {
          alert("Step 2");
          console.table(response);
        },
        error: function(jqXHR, textStatus, errorThrown) {
          alert("Step 3");
          console.log('AJAX request failed: ' + textStatus + ', ' + errorThrown);
        }
      });
    
    });

PHP调试

<?php
 echo "<script>alert('PHP Step 1');</script>";
if (isset($_POST['pocet'])) {
  echo "<script>alert('PHP Step 2');</script>";
  $temp_pocet = $_POST['pocet'];
}
?>

这是一个错误检测系统通过警报,告诉我你得到什么警报

相关问题