【问题标题】:Why am I getting undefined index when calling a php method with AJAX?为什么我在使用 AJAX 调用 php 方法时得到未定义的索引?
【发布时间】:2016-07-31 18:09:12
【问题描述】:

我正在尝试从我的相册课程中获取一些信息。我认为我的问题在于我的 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>

【问题讨论】:

  • 你能指定.btn-tracks div、按钮还是其他什么?
  • @Xzandro 它是表单中的一个按钮 type="submit"。 ""
  • 你不发布一个名为albumTitle的变量,你把它命名为title
  • 你没有在ajax中传递变量。
  • @JimL 不过,我的班级需要专辑的标题。该变量为我获取了该信息。您能否具体告诉我如何更改我的代码来做到这一点?我很难理解。

标签: php jquery ajax methods undefined-index


【解决方案1】:

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

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

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

data: {title: albumTitle},

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

【讨论】:

  • 我这样做了,但在警报中什么也没得到。不过,至少未定义的索引错误消失了。
  • 我想我解决了这个问题。在我的 Album.php 文件中,我只是返回了 $tracks。我想当我提醒这个时,它无法提醒阵列。我尝试了 var_dumping 它,它显示了所有信息都很好。现在我想剩下的就是使用 jQuery 来用信​​息填充我的页面了!感谢您的帮助。
猜你喜欢
  • 2016-11-07
  • 2015-03-23
  • 2012-02-05
  • 1970-01-01
  • 2017-03-29
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多