即使ajax之前的变量输出正确,为什么我的AJAX数据为空?

时间:2018-08-08 15:19:34

标签: javascript ajax

$(document).ready(function () {
    $("#p").change(function () {
        var p_id = $(this).val();
        console.log(p_id);     //<-------
        $.ajax({
            url: "m/a/a.class.php",
            method: "POST",
            data: {pId: p_id},
            dataType: "text",

            success: function (data) {
                console.log(data); //<------
            }
        });

    });

我想将数据传递给PHP,但是当我尝试将其用于查询时,它为空,因此我在AJAX脚本前后添加了console.log

在给我选定产品的正确值("id")之前,例如“ 9”,但是AJAX脚本中的console.log仅返回空值“”。

这是什么问题?我会错过理解AJAX的代码吗?

更新:

case 'linie':
               if (isset($_POST['pId'])){
                $t = $_POST['pId'];
                }
                $sql = 'SELECT l.id, l.bezeichnung as bezeichnung '
                    . 'FROM l  "
                    . 'LEFT JOIN p ON p.id=l.p_id '
                    . 'WHERE l.p_id ="'.$t.'" AND l.deleted=0 AND p.deleted=0  '
                    . 'ORDER BY l.bezeichnung ';
                break;

这是我的PHP代码的相关部分,我尝试获取先前的输入。

更新2:

$(document).ready(function () {
    $("#p").change(function () {
        var p_id = $(this).val();
         console.log(p_id);
         $.ajax({
        method: "POST",
        url: "m/a/a.class.php",
        data: { pID: $('#p').val() },
        async: true,
        dataType: 'text', (...)

当我将其更改为它时,它对我有用:)

1 个答案:

答案 0 :(得分:2)

我想您正在播放数据数据。

此数据

data: {produktId: p_id},

与此数据不同

success: function (data) {

更好的书写方式是

$("#produkt").change(function () {
        var p_id = $(this).val();
        console.log(p_id);     //<-------
        $.ajax({
            url: "modules/ausschuss/ausschuss.class.php",
            method: "POST",
            data: {produktId: p_id},
            dataType: "text",

            success: function (response) {
                console.log(response); //<------
            }
        });

    });

注意success块参数

因此,数据data: {produktId: p_id},是详细信息,您将传递给ajax调用。

ajax调用可能返回也可能不返回响应,该响应在成功块中以response的形式返回。

Example