为什么在使用 AJAX 调用 php 方法时会出现未定义的索引?

Why am I getting undefined index when calling a php method with AJAX?

提问人:Jordan Carter 提问时间:4/11/2016 最后编辑:Jordan Carter 更新时间:4/11/2016 访问量:104

问:

我正在尝试从我的专辑课中获取一些信息。我认为我的问题在于我的 AJAX 调用的语法。让我一步一步地为你分解一下。方法如下:

相册.php

    ...

    public function getTracks ($title) {

    $db = Dbclass::getDB();
    $query = "SELECT *
                FROM upcoming_albums_tracks
                WHERE albums_title = :title";

    $statement = $db->prepare($query);
    $statement->bindParam(':title', $title, PDO::PARAM_STR, 50);
    $statement->execute();
    $tracks = $statement->fetchAll();
    return $tracks;

    }

顺便说一句,这种方法工作正常。现在这是我调用此方法的 php 文件:

GetTracks.php

<?php
require_once '../../models/database.php';
require_once 'Album.php';

$tracks = new Album;
$tracks->getTracks($_POST['albumTitle']);

return $tracks;

最后,AJAX 调用

upcoming_albums_ajax.js

    ...

    $(document).ready(function() {

    //Get track info with Ajax 
    $(".btn-tracks").click(function (e) {

        // stop form submission first
        e.preventDefault();

        // get album title
        var albumTitle = $(this).val();
        console.log(albumTitle) //This gives me the value I'm looking for.

        // get tracks from php
        $.ajax({
            url : '../../controllers/admin/GetTracks.php',
            //I think the issue is in how I'm formatting the data.
            data: {title: albumTitle},
            type : 'POST',
            success : function (d) {
                alert(d);
            },
            error : errorHandler
        });

    });

});

我的警报只是弹出,告诉我我有一个未定义的索引:albumTitle。

顺便说一句,这是我的按钮:

<button type='submit' class='btn-tracks' value='" . $album['albums_title'] . "'>Show Tracks</button>
php jquery ajax 方法 undefined-index

评论

0赞 Xzandro 4/11/2016
你能指定div、按钮或其他任何东西吗?.btn-tracks
0赞 Jordan Carter 4/11/2016
@Xzandro它是表单中的按钮 type=“submit”。“<button type='submit' class='btn-tracks' value='” .$album['albums_title'] .“'>显示曲目</按钮>”
2赞 JimL 4/11/2016
你不需要 POST 一个名为 的变量,你可以命名它albumTitletitle
0赞 Naumov 4/11/2016
您没有在 ajax 中传递变量。
0赞 Jordan Carter 4/11/2016
@JimL 不过,我的班级需要专辑的标题。变量为我获取该信息。您能否具体告诉我我将如何更改我的代码来执行此操作?我很难理解。

答:

1赞 JimL 4/11/2016 #1

在 GetTracks.php 中,您期望收到$_POST['albumTitle']

$tracks->getTracks($_POST['albumTitle']);

但是你从 javascript 传入$_POST['title']

data: {title: albumTitle},

改变任何一个(所以它们是平等的),你应该没问题

评论

0赞 Jordan Carter 4/11/2016
我这样做了,但在警报中什么也没得到。不过,至少未定义的索引错误消失了。
0赞 Jordan Carter 4/11/2016
我想我解决了这个问题。在我的相册.php文件中,我只是返回了$tracks。我想当我对此发出警报时,它无法向阵列发出警报。我试着var_dumping它,它很好地显示了所有信息。现在我想剩下的就是使用 jQuery 用信息填充我的页面!感谢您的帮助。