2016-04-10 18 views
2

Albümlerimden bazı bilgiler almaya çalışıyorum. Sorunumun AJAX çağrımın sözdiziminde olduğunu düşünüyorum. Bu adımı adım adım çözeceğim.AJAX ile bir php yöntemini çağırırken neden tanımlanmamış dizin alıyorum?

Album.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; 

    } 

Bu yöntem, bu arada iyi çalışıyor: İşte bir yöntem.

GetTracks.php

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

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

return $tracks; 

Ve nihayet, AJAX

... 

    $(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 
     }); 

    }); 

}); 

upcoming_albums_ajax.js

çağrı Benim uyarı sadece söylüyorum açılır: Şimdi burada bu yöntemi çağıran benim php dosyası var undefined bir dizinim var: albumTitle. Bu arada

, bu benim düğmesidir: $_POST['albumTitle']

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

almayı bekliyoruz GetTracks.php olarak

<button type='submit' class='btn-tracks' value='" . $album['albums_title'] . "'>Show Tracks</button> 
+0

'.btn-tracks' div, button ya da her neyse belirtebilir misiniz? – Xzandro

+0

@Xzandro bu bir düğme türü = "gönder" formundadır. "" –

+2

"albumTitle" adlı bir değişkeni POST yapmıyorsunuz, adınız' title 'olarak adlandırılıyor – JimL

cevap

1

Ama javascript

data: {title: albumTitle}, 

den $_POST['title'] geçmek

Her ikisini de değiştirin (bu nedenle eşittir) ve iyi durumda olmalısınız

+0

Bunu yaptım, ancak uyarıda hiçbir şey almayın. En azından tanımlanmamış dizin hatası olsa da gitti. –

+0

Sanırım sorunu çözdüm. Album.php dosyasında sadece $ parçalarını iade ettim. Bunu uyardığımda, diziyi uyarması mümkün değil. Var_dumping denedim ve tüm bilgileri gayet iyi gösterdi. Şimdi sanırım geriye kalan her şey jQuery'yi sayfamı bilgi ile doldurmaktır! Yardım ettiğin için teşekkür ederim. –

İlgili konular