AJAX POST组表格变量为PHP

时间:2017-11-09 14:14:29

标签: javascript php jquery ajax

我正在尝试将一组表单参数发送到PHP脚本进行处理。

我之前使用$.post完成了类似的操作,但现在我正在尝试使用$.ajax严格执行此操作。

这是应该将所有变量发送到PHP脚本的jQuery click事件:

$('.searchSubmit').on('click', function()
{
  var searchCriteria = {
      import_bill: $('#import_bill').val(), 
      import_ramp: $('#import_ramp').val(), 
      import_delivery: $('#import_delivery').val(), 
      // few more form parameters
    };

  $.ajax({
    url: 'api/railmbs.php', // process script
    type: 'POST',
    data: searchCriteria, // parameter group above
    dataType: 'html' // had this set to json, but only got fail 
    success: function(data, textStatus, jqXHR)
    {
      console.log(data);
    },
    error: function(jqHHR, textStatus, errorThrown)
    {
      console.log('fail');
    }
  });
});

以下是PHP脚本,名为railmbs.php:

<?php
  if(isset($_POST['searchCriteria']))
  {
    $value = $_POST['searchCriteria'];
    $_SESSION['where'] = "";

    $import_bill = mysqli_real_escape_string($dbc, trim($value['import_bill']));
    $import_ramp = mysqli_real_escape_string($dbc, trim($value['import_ramp']));
    $import_delivery = mysqli_real_escape_string($dbc, trim($value['import_delivery']));

    echo $import_bill; // just trying to echo anything at this point
  }
?>

不确定我做错了什么。如果我在echo之前hello IF,则控制台将相应地输出。但我似乎无法从echo内部IF获取任何内容。

有没有人看到我的错误?

3 个答案:

答案 0 :(得分:1)

首先。为什么不使用$("form").serialize()?它会更清洁。 其次,您在根对象中传输数据,因此为了获取值,请检查$_POST数组。 而不是$value = $_POST['searchCriteria']使用$value = $_POST;。 这个PHP代码应该可以工作:

<?php
  if(isset($_POST))
  {
    $_SESSION['where'] = "";

    $import_bill = mysqli_real_escape_string($dbc, trim($_POST['import_bill']));
    $import_ramp = mysqli_real_escape_string($dbc, trim($_POST['import_ramp']));
    $import_delivery = mysqli_real_escape_string($dbc, trim($_POST['import_delivery']));

    echo $import_bill; // just trying to echo anything at this point
  }
?>

或修改您的js以在searchCriteria对象中发送数据,如下所示:

  var searchCriteria = {
searchCriteria: {
      import_bill: $('#import_bill').val(), 
      import_ramp: $('#import_ramp').val(), 
      import_delivery: $('#import_delivery').val(), 
      // few more form parameters
    }};

答案 1 :(得分:1)

您没有设置&#34; searchCriteria&#34;变量

改变这个:

$('.searchSubmit').on('click', function()
{
  var searchCriteria = {
      import_bill: $('#import_bill').val(), 
      import_ramp: $('#import_ramp').val(), 
      import_delivery: $('#import_delivery').val(), 
      // few more form parameters
    };

  $.ajax({
    url: 'api/railmbs.php', // process script
    type: 'POST',
    data: searchCriteria, // parameter group above
    dataType: 'html' // had this set to json, but only got fail 
    success: function(data, textStatus, jqXHR)
    {
      console.log(data);
    },
    error: function(jqHHR, textStatus, errorThrown)
    {
      console.log('fail');
    }
  });
});

为:

$('.searchSubmit').on('click', function()
{
    var data = {

    searchCriteria: {

      import_bill: $('#import_bill').val(), 
      import_ramp: $('#import_ramp').val(), 
      import_delivery: $('#import_delivery').val(), 
      // few more form parameters

     } 

    };

  $.ajax({
    url: 'api/railmbs.php', // process script
    type: 'POST',
    data: data, // parameter group above
    dataType: 'html' // had this set to json, but only got fail 
    success: function(data, textStatus, jqXHR)
    {
      console.log(data);
    },
    error: function(jqHHR, textStatus, errorThrown)
    {
      console.log('fail');
    }
  });

答案 2 :(得分:0)

您应该检查是否实际使用浏览器开发人员工具发送帖子数据,或者在PHP脚本的开头键入var_dump($_POST);

据我所知,你从未真正将searchCriteria设为post变量。

目前,您的$_POST变量应包含字段import_billimport_ramp等。将您的if语句或JavaScript对象更改为{searchCriteria: {/*Your data here*/}