$ HTTP返回错误代码0有时和作品有时
我有一个角控制器,其从表单中获取数据,操纵数据并把它发送到经由$http
服务器保存
的问题是,该代码作品有时候它很好,即它返回成功函数并且有时不起作用,即它返回错误代码0,但即使发生这种情况,数据仍然保存在数据库中,即使服务器日志显示其返回的成功,为什么会这样呢? 有时会调用成功函数,有时会调用错误函数。我究竟做错了什么?
角控制器是:
app.controller("premiumAdvertsController",function($scope,ergastAPIservice,$routeParams,$location,$rootScope)
{
function uploadImage(input,success) {
console.log("yeh input hai ",input);
if (input.files && input.files[0]) {
var FR= new FileReader();
FR.onload = function(e) {
success(e.target.result);
};
FR.readAsDataURL(input.files[0]);
}
}
$scope.registerPremiumAdvertisement=function()
{
console.log("shakil k sath check!eeersss!");
console.log("hello");
var count=1;
var owner=$rootScope.currentUser.email;
var companyName=$scope.companyName;
var companySlogan=$scope.companySlogan;
var companyAddress=$scope.companyAddress;
var companyFacebookLink=$scope.companyFacebookLink;
var companyTwitterLink=$scope.companyTwitterLink;
var companyContactNumber=$scope.companyContactNumber;
var companySiteLink=$scope.companySiteLink;
var sliderText=$scope.imageText;
var category="premiumBrand";
var featuredOffer1Title=$scope.featuredOffer1Title;
var featuredoffer1Description=$scope.featuredoffer1Description;
var featuredoffer1Expiry=$scope.featuredoffer1Expiry;
var featuredOffer2Title=$scope.featuredOffer2Title;
var featuredoffer2Description=$scope.featuredoffer2Description;
var featuredoffer2Expiry=$scope.featuredoffer2Expiry;
var featuredOffer3Title=$scope.featuredOffer3Title;
var featuredoffer3Description=$scope.featuredoffer3Description;
var featuredoffer3Expiry=$scope.featuredoffer3Expiry;
var featuredOffer4Title=$scope.featuredOffer4Title;
var featuredoffer4Description=$scope.featuredoffer4Description;
var featuredoffer4Expiry=$scope.featuredoffer4Expiry;
console.log("hello");
var detailedOffer1Description=$scope.detailedOffer1Description;
var detailedOffer2Description=$scope.detailedOffer2Description;
var detailedOffer3Description=$scope.detailedOffer3Description;
var detailedOffer4Description=$scope.detailedOffer4Description;
console.log("hello");
var storeName=$scope.storeName;
var file1=document.getElementsByClassName("companyLogo")[0];
var file2=document.getElementsByClassName("picture2")[0];
var file3=document.getElementsByClassName("picture3")[0];
var file4=document.getElementsByClassName("picture4")[0];
var file5=document.getElementsByClassName("picture5")[0];
console.log("hello");
//var file6=document.getElementsByClassName("picture6")[0];
//var file7=document.getElementsByClassName("picture7")[0];
var f1,f2,f3,f4,f5;
var out=[f1,f2,f3,f4,f5];
var arr=[file1,file2,file3,file4,file5]
for (var i=0;i<arr.length;i++)
{
console.log(i);
if(arr[i].files[0])
{
(function(ith){
uploadImage(arr[ith],function(result){
out[ith]=result;
count++;
console.log(count,"count");
if(count==6)
{
console.log("count hogya six!");
var featuredOffer1={offerTitle:featuredOffer1Title,offerDescription:featuredoffer1Description,offerExpiry:featuredoffer1Expiry};
var featuredOffer2={offerTitle:featuredOffer2Title,offerDescription:featuredoffer2Description,offerExpiry:featuredoffer2Expiry};
var featuredOffer3={offerTitle:featuredOffer3Title,offerDescription:featuredoffer3Description,offerExpiry:featuredoffer3Expiry};
var featuredOffer4={offerTitle:featuredOffer4Title,offerDescription:featuredoffer4Description,offerExpiry:featuredoffer4Expiry};
var featuredOffers=[];
featuredOffers.push(featuredOffer1);
featuredOffers.push(featuredOffer2);
featuredOffers.push(featuredOffer3);
featuredOffers.push(featuredOffer4);
var pages=[];
var pageCount=0;
var offerDescriptions=[];
var detailerOffer1={offerDescription:detailedOffer1Description,offerPicture:out[1]}
var detailerOffer2={offerDescription:detailedOffer2Description,offerPicture:out[2]}
var detailerOffer3={offerDescription:detailedOffer3Description,offerPicture:out[3]}
var detailerOffer4={offerDescription:detailedOffer4Description,offerPicture:out[4]}
offerDescriptions.push(detailerOffer1);
offerDescriptions.push(detailerOffer2);
offerDescriptions.push(detailerOffer3);
offerDescriptions.push(detailerOffer4);
var f={pageCount:pageCount,owner:owner,category:category,pages:pages,companyLogo:out[0],imageText:sliderText,companyName:companyName,companySlogan:companySlogan,companyAddress:companyAddress,companyContactNumber:companyContactNumber,companyFacebookLink:companyFacebookLink,companyTwitterLink:companyTwitterLink,companySiteLink:companySiteLink,featuredOffers:featuredOffers,offerDescriptions:offerDescriptions,premiumAdd:true};
console.log("f bangya!");
ergastAPIservice.saveHotBrand(f).then(function(res){
console.log("server pe chala gya data!");
if(res.success)
{
console.log("successfully got success from server !!");
$(".modalKaText").text("successfully uploaded");
$("#myModal").modal();
$location.path("/home");
}
else if(res.error)
{
console.log("got error from server!!!");
$(".modalKaText").text("There was some error");
$("#myModal").modal();
$location.reload()
}
else {
console.log("got nothing from server");
}
},function(res){
res=JSON.stringify(res);
console.log("error found!!",res);
})
}
})
})(i);
}
else
{
count++;
console.log(count,"count");
}
}
}
});
为$ HTTP函数(saveHotbrand)的代码是:
所述的NodeJS和表达这个链接的代码是:
app.post('/saveAdd',function(req,res){
\t console.log("save add request!");
var collection=req.db.get("advertisements");
console.log("got database")
collection.insert(req.body,function (err,doc){
if(err)
{
\t console.log("sending error")
res.send({error:true});
}
else {
\t console.log("sending success")
res.send({success:true});
}
})
})
因此,对于任何人现在,该页面基本上被重定向,所以我开始通过ng-click而不是ngsubmit调用控制器功能,它的工作原理。
在代码的NodeJS试试这个:
app.post('/saveAdd',function(req,res){
var collection=req.db.get("advertisements",function(err){
collection.insert(req.body,function (err,doc){
if(err)
{
res.send({error:true});
}
else {
res.send({success:true});
}
})
})
})
我曾遇到类似的问题,这是通过增加一个回调函数解决。您可以看到问题here。
nop,不工作! –
更改eargast调用函数来此 ergastAPIservice.saveHotBrand(F).success(函数(RES){}
那么它只会在成功而努力。
这就是原始代码,但$ http的角度js文档清楚地表明成功和错误不推荐使用。 –
您通过提交表单点击一个按钮并处理其点击事件以提交表单,每当你这样做时,你需要从onCLick函数明显返回false。
你需要配对这个例子。 – cwallenpoole
我只是想尽可能地做到尽善尽美 –
正如一个侧面提示:如果你对同样的元素有不同的类名,那么使用'id'或者只是使用一个普通的类名。 –