Таким образом, я пытаюсь отправить запрос на http $ angularjs на php, но он вызовет successCallback
(значит, это означает, что мой запрос успешный?), Но когда я проверил свою базу данных, ничего не произошло, и мои данные все еще там. Я знаю, что здесь что-то не хватает. пожалуйста помоги.
Контроллер (который вызывает функцию checkPollCodeIfAvail
)
pollFactory.checkPollCodeIfAvail('qwe123').then(function successCallback(response){ console.log('success'); }, function errorCallback(response){ console.log('fail'); });
Фабрика:
factory.checkPollCodeIfAvail = function(x){ code = x; return $http({ method: 'POST', data: { 'action' : 'checkPollCode', 'pollCode' : code }, url: 'http://localhost/poll/api.php' }); }; return factory;
api.php
if(empty($_POST['action'])){ return; } if(($_POST['action']) == "checkPollCode"){ $checkPollCode = $_POST['pollCode']; } switch ($_POST['action']) { case 'checkPollCode': $sql = "DELETE FROM polls WHERE pollCode = :pollcode"; $stmt = $db_con->prepare($sql); $stmt->bindParam(":pollcode", $checkPollCode); $stmt->execute(); if($stmt->rowCount() > 0){ echo "success"; }else{ echo "error"; } break; }
Спасибо всем, кто может мне помочь.
В угловой попытке добавьте это
return $http({ method: 'POST', data: { 'action' : 'checkPollCode', 'pollCode' : code }, url: 'http://localhost/poll/api.php' transformRequest:function(obj) { var str=[]; for(var p in obj){ str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])) } return str.join("&"); }, headers:{'Content-Type':'application/x-www-form-urlencoded'} }).then(function(response){ console.log('success'); }
Заголовком заголовка Defaut углового является application / json, и если вы не изменяете заголовок, вы должны декодировать ввод в php. Я не знаком с php и меняю форму на urlencoded.
Для приложения / x-www-form-urlencoded тело HTTP-сообщения, отправленного на сервер, по существу является одной гигантской строкой запроса – пары имя / значение разделяются амперсандом (&), а имена отделяются от значений с помощью равен символу (=). Примером этого может быть:
MyVariableOne=ValueOne&MyVariableTwo=ValueTwo
И этот код
transformRequest:function(obj) { var str=[]; for(var p in obj){ str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])) } return str.join("&"); }
перед отправкой данных на сервер, вы зацикливаете данные и преобразуете их в x-www-form-urlencoded
.
У вас есть pbm в Http
Попробуйте этот код:
var fd = new FormData(); fd.append('action', "checkPollCode"); fd.append('pollCode', code); $http.post("http://localhost/poll/api.php", fd, { transformRequest: angular.identity, headers: {'Content-Type': undefined} }).success(function(data, status, headers, conf) { //Evrytheng OK }). error(function(data, status, headers, config) { alert("You have some error"); });
Не забудьте добавить $ Http в ваш контроллер:
app.controller('YourController', ['$scope', '$http',function($scope, $http){...