php - 无法使用 AJAX 发送 POST 值

标签 php html mysql ajax post

我有两个单独的文件,一个 bargraph.html,另一个 data.php。

Bargraph.html如下:

<form method="POST" name="dataform" action="">
  <select name="data1" id="data1-value">
    <option value="DateRecorded">DateRecorded</option>
    <option value="InletVoltage">InletVoltage</option>
    <option value="InletCurrent">InletCurrent</option>
    <option value="ActivePower">ActivePower</option>
    <option value="PowerFactor">PowerFactor</option>
    <option value="SystemID">SystemID</option>
    </select>
    <select name="data2" id ="data2-value">
    <option value="DateRecorded">DateRecorded</option>
    <option value="InletVoltage">InletVoltage</option>
    <option value="InletCurrent">InletCurrent</option>
    <option value="ActivePower">ActivePower</option>
    <option value="PowerFactor">PowerFactor</option>
    <option value="SystemID">SystemID</option>
  </select>
</form>

<script type="text/javascript">

$('#data1-value').change(function(){
        var data1Value = $(this).val();
$('#data2-value').change(function(){
        var data2Value = $(this).val();

    $.ajax({
        type: 'post',
        url: 'data.php',
        dataType: 'html',
        data: {data1, data2: data1Value, data2Value},
        success:function(data){ 
            alert(data); 
        }, 
        error:function (xhr, ajaxOptions, thrownError){
            alert(thrownError);
        }, 
        complete: function(){
        }
    });
})});
</script>

一段data.php如下:

if (isset($_POST['data1'])) {
    $opp1 = $_POST['data1'];
    $opp2 = $_POST['data2'];
} else {
    $opp1 = 'SystemID';
    $opp2 = 'ApparentPower';
}

$sql = "SELECT $opp1, $opp2 FROM RaritanMachineDataa";

在我的 bargraph.html 中,我有两个下拉菜单。我希望从下拉菜单中选择的选项使用 AJAX 发送到我的 data.php 文件以在我的数据库上执行选择语句。

目前当我运行我的代码时,它返回一个错误

Uncaught ReferenceError: data1 is not defined

这是指向第 53 行:

url: 'data.php',

有人可以给我一些帮助吗,因为我不知道如何解决这个问题。

更新:(下面的代码):

<script type="text/javascript">

$('#dataform').submit(function(e){
        var data1Value = $("#data1").val();
        var data2Value = $("#data2").val();

    $.ajax({
        type: 'post',
        url: 'data.php',
        dataType: 'html',
        data: {data1, data1Value, data2: data2Value},
        success:function(data){ 
            alert(data); 
        }, 
        error:function (xhr, ajaxOptions, thrownError){
            alert(thrownError);
        }, 
        complete: function(){
        }
    });
})});
</script>

返回错误:

Uncaught SyntaxError: Unexpected token }

在线(倒数第二行)

})});

我试过删除括号和花括号,但似乎无法运行。我做错了什么?感谢您的协助

更新(提交按钮不发布数据):

        <option value="PowerFactor">PowerFactor</option>
    <option value="SystemID">SystemID</option>
  </select>
    <input type="submit" name="submit" value="Submit">
</form>

<script type="text/javascript">

    $('#dataform').submit(function(e){
        var data1Value = $("#data1").val();
        var data2Value = $("#data2").val();
    $.ajax({
        type: 'post',
        url: 'data.php',
        dataType: 'html',
        data: {data1, data1Value, data2: data2Value},
        success:function(data){ 
            alert(data); 
        }, 
        error:function (xhr, ajaxOptions, thrownError){
            alert(thrownError);
        }, 
        complete: function(){
        }
    });
    e.preventDefault();
});

最佳答案

你的错误在这里:

  $.ajax({
    type: 'post',
    url: 'data.php',
    dataType: 'html',
    data: {data1, data2: data1Value, data2Value}, <-- Your error is here

将此行更改为:

 data: {data1: data1Value, data2: data2Value}

另外我刚刚注意到你正在这样做

('#data1-value').change(function(){
    var data1Value = $(this).val();
     $('#data2-value').change(function(){
        var data2Value = $(this).val();

我不相信 $('#data2-value').change 会被调用。我建议您在设置两个值后处理表单的提交!!!

使用@Devpro 评论,您的下拉菜单现在需要分配一个 id 才能使此提交功能正常工作

HTML

 <select name="data1" id="data1-value"> to  <select id="data1" name="data1" id="data1-value">
 <select name="data2" id ="data2-value"> to  <select id="data2" name="data2" id ="data2-value">

JQuery

 $('#dataform').submit(function(e) {
       var data1Value = $("#data1").val();
       var data2Value = $("#data2").val();

       //ajax submit with my edits
       $.ajax....

       e.preventDefault(); //prevent page refresh.
  });

关于php - 无法使用 AJAX 发送 POST 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54863716/

相关文章:

php - CodeIgniter 中正确的 sql 查询给出了错误

javascript - 3 个 jQuery 脚本不能在 HTML 页面中协同工作

mysql - 选择 SUM 并计算每行的百分比

mysql - 如何通过workbench远程访问MySQL

php - 为什么我的变量超出范围? PHP

PHP 警告 : array_filter() expects parameter 2 to be a valid callback, 第二个数组成员不是有效方法

php - SplObjectStorage - 分离行为

html - Bootstrap 4 Navbar 在较小的视口(viewport)上高度为零

html - 当具有已定义宽度的子元素位于具有 colspan 的单元格内时,如何修复 Microsoft Edge 显示不正确的表格单元格宽度?

java - 检索数据只给我数据库的第一行,我只想将最后一行插入数据库