2014-02-22 68 views
2

使用正常的html表單,我可以通過發送POST請求到/ api/tasks/insert/ 添加一個新任務POST數據包括任務的$ name和$ description。 但是,當我使用Angular將數據推送到PHP中的REST API時,僅發送POST請求並在數據庫中創建空行。 這意味着POST變量未被傳遞,即名稱和描述。 我在做什麼錯?

我一直堅持在這最近幾個小時。我檢查了無數的教程,並且非常確定語法。 PHP中的後端REST API工作正常。

var res=$resource('http://localhost/api/tasks/insert/',{}, 
      { 
       createTask:{method:'POST'} 
      }); 
     postData={name:"Hello",description:"DescBaby"} 
     res.createTask({},postData); 
     //res.createTask(postData); tried this also, but doesn't work 

,我試圖根據的評論的另一個變化是這樣的:

res.createTask({name:"TestName", description:"descBaby"}).$promise.then(function(value) 
      { 
       console.log("Success"); //I get success in console. 
      },function(errResponse) 
      { 
       console.log("Error"); 
      }); 

角不給我任何錯誤。只需發送一個空白的POST請求到網址。

編輯: 我在Chrome的網絡窗格中檢查數據是否被髮送,並且事實證明它正在發送。 但是,在響應中顯示:

未定義的索引:XYZ.php中的名稱行ABC。

線上面指出的是在我的PHP下面一行:

$obj->InsertTask($_POST['name'],$_POST['description']); 
+0

檢查這個網址: http://stackoverflow.com/questions/13269882/angularjs-resource-restful-example –

+0

我做了,但沒有喜悅。 :(我的代碼似乎正確,但是,對吧? – SLearner

+0

檢查請求標題和響應下的瀏覽器網絡窗格?看看數據是否被髮送? – joashp

回答

0

你看看調試器的網絡選項卡?您可以檢查是否有有效的數據被髮送到服務器。如果可以的話,這不是JS或Angular問題。在第一次看起來,你似乎有有效的角度代碼。以防萬一檢查你是否設置了適當的ajax頭文件。

「X-要求,用」: 「XMLHttpRequest的」

等是否爲AJAX調用你的工作?

0

試試這個(並創建一個工廠遵循最佳實踐):

服務

services.factory("Tasks", function($resource) { 
    return $resource('http://localhost/api/tasks/insert/', {}, { 
     createTask: {method:'POST', params: {name:"Hello",description:"DescBaby"}} 
    }) 
}); 

控制器

Tasks.$createTask(); 
+0

請看我的答案。問題不在於JS,而在於PHP。 – SLearner

+0

在您的瀏覽器中檢查網絡並查看POST數據是否在頭部段中傳遞 –

1

感謝我的朋友,我終於得到了代碼運行。問題不在於我的Angualar代碼,而在於php代碼。

事實證明,我無法將POST數據讀爲$ _POST []。 file_get_contents應該用於這種情況,因爲數據是通過JSON有效載荷發送的,而不是通過請求參數發送的!

以下是我得到了它運行:Angularjs $http.post, passing array to PHP