在提交表单发布之前获取URL

时间:2018-12-17 18:44:12

标签: javascript jquery angular

我想根据用户输入提交表单,但是该URL仅适用于上一个按钮。我如何使用它,以便addr.url成为当前URL,而不是先前的单击。我想在提交帖子请求之前获取网址。

<form id="launch" ngNoForm action="{{addr?.url}}" target="user.name" method="POST">
<input type="hidden" name="process" value="1"/>
<input type="hidden" name="key" value="user.cookie"/>
<button (click)="onSubmit(userInfo)">
<img src="../../../image/clickme.png">
</button>
</form>

onSubmit(userInfo) {
  console.log('post submission' + userInfo);
  this.paymentService.launch(userInfo).subscribe(data => {
    this.addr = data;
    if (this.addr && this.addr !== undefined && this.addr.url && this.addr.url !== undefined) {
        console.log ('url: ' + this.addr.url);
        $('#launch').submit();
    }
  });
}

2 个答案:

答案 0 :(得分:2)

这里是“以Angular方式”将数据发布到服务器的示例:

表单标签:

<form novalidate
      (ngSubmit)="save(signupForm)">

提交按钮:

      <button type="submit">
        Save
      </button>

组件中的save方法:

  save(signupForm: NgForm) {
    console.log(signupForm.form.value);
    // Call an http service to post the form values.
    this.dataService.post(signupForm.form.value).subscribe();
  }

dataService:

  post(signupValues): Observable<Product> {
    const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
    return this.http.post(this.url, signupValues, { headers: headers });
  }

注意:此代码是在没有文本编辑器帮助的情况下编写的,可能包含语法错误。

答案 1 :(得分:1)

我将按照DeborahK建议的方式进行操作,并在onSubmit()函数中,将两个HTTP请求(一个获得url和实际提交的请求)与RxJS组合在一起。例如。 this.httpServe.getUrl()。pipe(flatMap(result => this.httpService.submitWithUrl(result,formValued)。