2015-11-02 52 views
2

我正在採取角度的第一步,並打破了我的頭兩個東西。 第一個是我不能從視圖傳遞變量到http.post調用。使用AngularJS和PHP將變量從視圖傳遞到http post使用AngularJS和PHP

在這個index.html的 ng-click傳遞正確的價值觀

<tbody> 
    <tr ng-repeat="data in filtered = (list | filter:search | orderBy : predicate :reverse) | startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit"> 
     <td><a href="{{data.link}}" target="_blank">{{data.songName}}</td> 
     <td>{{data.artist}}</td> 
     <td><a ng-click="deleteSong(data.songName, data.artist, data.link)"><i class="glyphicon glyphicon-trash"></i></a></td> 
    </tr> 
</tbody> 

和app.js的deleSong功能如下:

$scope.deleteSong = function($songName, $artist, $link) { 
    // Posting data to php file 
    $http({ 
     method : 'POST', 
     url  : 'ajax/deleteSong.php', 
     data : $scope.data, //forms user object 
     headers : {'Content-Type': 'application/x-www-form-urlencoded'} 
    }) 
     .success(function(data) { 

      if (data.errors) { 
       // Showing errors. 
       $scope.errorSong= data.errors.song; 
       $scope.errorArtist= data.errors.artist; 
       $scope.errorLink= data.errors.link; 
      } else { 
       $scope.message = data.message; 
      } 
     }); 
    $scope.user = null 
} 

最後,deleteSong.php看起來是這樣的:

<?php 
include('../includes/config.php'); 

$errors = array(); 
$data = array(); 
// Getting posted data and decodeing json 
$_POST = json_decode(file_get_contents('php://input'), true); 

$song = $_POST['song']; 

$query="DELETE FROM songs WHERE songName = '$song'"; 
$mysqli->set_charset('utf8mb4'); 
$result = $mysqli->query($query) or die($mysqli->error.__LINE__); 

echo $query; 
?> 

當我點擊刪除歌曲圖標,該函數被調用但我得到的迴應是這樣的:

DELETE FROM songs WHERE songName = ''

任何想法,我缺少什麼和爲什麼查詢沒有得到我傳遞給deleteSong.php數據?

+0

print_r($ _ POST)的輸出是什麼; ? –

+0

我試着檢查,但它是空的... –

+0

我會檢查由POST請求角度正在使用瀏覽器檢查工具發送的數據。 – namelivia

回答

3

更改您的代碼如下,您正在將數據作爲ng-clik函數的參數。但你沒有使用這些。相反,你正在嘗試$ scope.data(這是別的東西)。所以改變代碼如下。

$scope.deleteSong = function($songName, $artist, $link) { 
// Posting data to php file 
$http({ 
    method : 'POST', 
    url  : 'ajax/deleteSong.php', 
    data : {'song':$songName},//Changed Line Here 
    headers : {'Content-Type': 'application/x-www-form-urlencoded'} 
}) 
    .success(function(data) { 

     if (data.errors) { 
      // Showing errors. 
      $scope.errorSong= data.errors.song; 
      $scope.errorArtist= data.errors.artist; 
      $scope.errorLink= data.errors.link; 
     } else { 
      $scope.message = data.message; 
     } 
    }); 
$scope.user = null 

}

0

你分配$ _ POST [ '歌']到$歌曲變量,但它並沒有在$ _POST數組中存在。請$_POST['songName']

0

這是你的PHP文件中的已知問題, 取代$_POST['song'],而是採用$_POST嘗試使用$data = json_decode(file_get_contents("php://input"));have a look here

可能的工作假設所有剩下的就是沒有錯誤... 確保,用的console.log,即$ SONGNAME,$藝術家,$鏈接變量包含正確的價值...

只是一張紙條,從未使用變量與$因爲美元被用於私人angularjs雜物bles

相關問題