首页 > 解决方案 > 使用 javascript 和 ajax 从 mysql 获取数据时出错

问题描述

我尝试使用 ajax 从 mysql 数据库中获取数据。我修改了在不同项目中可以正常工作的旧 ajax 代码,但它在这里不起作用。

我使用 javascript 函数如下:

var text1 = document.getElementById('ST0_nazwaMenu');
var combo1 = document.getElementById('S0_dzienMenu');
var combo2 = document.getElementById('S0_posilekMenu');

function zaladujSzczegoly() {
        if (text1.value.trim() != "" && combo1.value.trim() != "" && combo2.value.trim() != "") {

                var nazwaMenu = text1.value.trim();
                var dzienMenu = combo1.value.trim();
                var posilekMenu = combo2.value.trim();

                $.ajax({
                        method: "POST",
                        url: "test.php",
                        data: {"jadlospis": nazwaMenu.val(), "dzien": combo1.val(), "posilek": combo2.val()},
                }).done(function( data ) {
                        var result = $.parseJSON(data);
                });


                alert(text1.value);

        }
}

text1.addEventListener('change', zaladujSzczegoly, false);
combo1.addEventListener('change', zaladujSzczegoly, false);
combo2.addEventListener('change', zaladujSzczegoly, false);

test.php 文件仅用于测试,它看起来像这样:

<?php

include 'db_connection.php';
include 'functions.php';


error_log("-->test.php:"."\n", 3, "/var/www/html/jadlospis/errors.log");

if (isset($_POST['jadlospis'],$_POST['dzien'],$_POST['posilek'])){

        error_log($_POST['jadlospis']."\n", 3, "/var/www/html/jadlospis/errors.log");

        $SQL = "SELECT COUNT(*) AS Konta FROM users WHERE jadlospis='".$_POST['jadlospis']."'";

        $result = mysqli_query($conn,$SQL ) or die(mysqli_error($this->dblink));
        while($row = mysqli_fetch_array($result))
        {
                $T_Count=$row['Konta'];
        }

        mysqli_close($conn);
        echo $result;
}

?>

更改表单控件后调用该函数,然后在浏览器控制台中收到一条错误消息:TypeError: nazwaMenu.val is not a function

请问有什么提示可能是什么问题吗?

标签: javascriptphpajax

解决方案


您已经将值提取text1到变量中nazwaMenu,因此您不需要调用nazwaMenu.val()
您可以使用text1.value.trim()$("#ST0_nazwaMenu").val().trim()或仅使用包含值的变量nazwaMenu

因为.val()不能在 value 或 DOM 上调用,所以 usr.val()对象需要是 JQuery 对象

替换你的这一行

data: {"jadlospis": nazwaMenu.val(), "dzien": combo1.val(), "posilek": combo2.val()},

data: {"jadlospis": nazwaMenu, "dzien": dzienMenu , "posilek": posilekMenu }

你应该没事的~


推荐阅读