我有一个托管表单正在使用的回调。表单进行一些处理并在提交时构建一个对象,然后以该对象作为唯一参数调用回调。
该表单由javascript对象启动。启动表单对象后,它将在当前视图中设置一个iframe。该iframe包含所有html以及表单的内容。
以下所有代码都位于Angular 1.3.13 + asp.net应用程序中。
我的回调应该是将表单对象中的数据记录到数据库中。但是,当它开始向数据库设置POST请求时,回调突然结束。
在初始化托管表单之前,我需要从数据库中获取一些必要的数据。
$scope.setupForm = function(element, group) {
app.groupSelected = group;
return People.get(app.context, app.personId)
.success(function(data, status) {
person.groupId = data.groupId;
/* insert pending grouping */
insertPendingGrouping(data, person);
/* generate grouping form */
return generateGroupingForm(person);
})
.error(errorHandler);
};
上面引用的 app
是一个保存会话数据的全局对象。我知道这不是处理会话数据的最佳方法,但是当前必须保留的代码已经存在。
因此People.get(context, personId)
是一种有角度的服务,它使用$ http检索特定人的数据。
让我们进入generateGroupingForm(person)
const generateGroupingForm = function(person) {
// element to house the form object
const formElement = $window.document.getElementById('grouping_form');
/* get the form token */
GroupingForm.getFormToken(app.context, app.personId, app.groupId, person)
.success(function(data, status) {
// tracking number for this grouping
person.groupingNumber = data.groupingNumber;
// form token
person.groupingToken = data.token;
// initiate the form
formElement.gpf = new GroupingForm(data.token, formHandler);
})
.error(errorHandler);
};
const formHandler = function(groupingObject) {
// log the grouping
$scope().logGrouping(groupingObject);
const status = $('#grouping-status');
if (groupingObject.groupingStatus !== 'Complete') {
// alert that an error occurred during grouping
} else {
// alert that grouping is successful
// log that the grouping was successful
// move view to completion page
}
};
上面的代码应该发生什么:
formHandler
被呼叫$scope().logGrouping(groupingObject);
被执行这是实际发生的事情:
formHandler
被呼叫$scope().logGrouping(groupingObject);
开始执行logGrouping
过早退出在对应用程序进行更改之前,将formHandler
放入html脚本视图中的脚本标签中,并且generateGroupingForm
中的ajax调用(angular。$ http调用)是一个jQuery。 ajax调用。
我添加了Person
角度服务,因此之前没有记录待处理的分组。
托管表单是我工作中一些旧商业惯例的产物,并且允许我们不同的产品与我们的API之一进行交互。长话短说,我不能放弃使用此托管表单。
每个@georgeawg,我已经从使用.success()
/ .error()
切换到.then()
/ .catch()
,但是我仍然面临上述问题。该问题似乎与与使用.success()
/ .error()
有关的问题分开。
我实际上找到了我遇到的问题的根源。长话短说,位于链中更远的地方,应该添加到groupObject
的对象实际上并未添加。解决此问题后,问题就解决了。是让我们绊倒的小事。