Завод отправляет данные на сервер и обрабатывается правильно, но после этого «.then» в контроллере не вызывается ниже.Угловое обещание с jquery ajax
Пожалуйста, дайте мне знать, почему «то» часть не выполняется в контроллере здесь после успешного вызова ajax.
завод
myapp.factory('startCampFactory',function($http,$q,$rootScope){
return {
startNewCampaign : function(){
var e = $("input#email");
var email = e.val();
var campname = $("input#campaignname").val();
var about = $("textarea#about").val();
var tamt = $("input#targetamount").val();
var edate = $("input#enddate").val();
var invitees = $("input#invitees").val();
var file_data = $("#file").prop("files")[0];
var form_data = new FormData();
form_data.append("file",file_data);
form_data.append("email",email);
form_data.append("campaignname",campname);
form_data.append("about",about);
form_data.append("targetamount",tamt);
form_data.append("enddate",edate);
form_data.append("invitees",invitees);
console.log(email+about+campname);
var deferred = $q.defer();
$.ajax({
type:'POST',
url: "http://localhost:8080/startcampaign",
data:form_data,
contentType:false,
processData:false,
cache:false,
dataType:"json",
success:function(msg,status)
{
//if(status=="success")
deferred.resolve("success");
$rootScope.$apply();
},
error:function()
{
deferred.reject();
$rootScope.$apply();
}
});
return deferred.promise;
}
}
});
conrtoller
function startCampCtrl($scope,startCampFactory)
{
$scope.startcamp = function(){
$("#submit").prop('disabled',true);
startCampFactory.startNewCampaign().then(function(d){
alert("here");
var temp = "<div class=\"alert alert-dismissable alert-success\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button> <strong>Campaign Saved successfully</strong></div>";
$(temp).prependTo("#startcamp");
$("#submit").prop('disabled',false);
$("input#campaignname").val('');
$("textarea#about").val('');
$("input#targetamount").val('');
$("input#enddate").val('');
$("input#invitees").val('');
$("input#file").val('');
},
function(){//On error
var temp = "<div class=\"alert alert-dismissable alert-warning\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button> <strong>Campaign could not be saved, please try again</strong></div>";
$(temp).prependTo("#startcamp");
$("#submit").prop('disabled',false);
});
}
}
Пожалуйста, не Не делай этого !!! Если вы используете $ .ajax JQuery и манипуляцию с домом через JQuery на заводе, ну, Angular ничего, и вам это не нужно! Поместите свою DOM-манипуляцию в директивы и сделайте запрос ajax с помощью API AngularJS: $ http, $ resource –
вы побеждаете цель такого углового –
На самом деле это не работало, поэтому он попытался это сделать $ http ({method: 'POST »URL: '/ startcampaign', данные: form_data, заголовки: { 'Content-Type': 'применение/х-WWW-форм-urlencoded'}}) успех (функция (данные, статус, заголовки, конфигурация) {. \t \t \t \t \t \t \t \t deferred.resolve(); \t \t \t \t \t \t \t}) \t \t \t .error (function() {deferred.reject();}); \t \t \t return offfer.promise; – rohit