1

Dart で単純な POST HttpRequest を送信しようとしています。ドキュメントによると、メソッドは、私が使用しているものである のrequest.onLoad.add代わりにする必要があります。request.onLoad.listenしかし、「onLoad.add」が存在しなかったため、ここにたどり着きました。:O 問題: エラーなし、送信なし、成功メッセージなし。

void main() {
  query("#sample_text_id")
    ..text = "Click me!"
    ..onClick.listen(submitHttpRequest('test.php'));
}

void submitHttpRequest(String phpFile, [json, callback(int status)]) {
  print('yeeep');
  var request = new HttpRequest();
  request.open('POST', 'php/$phpFile');
  request.onLoad.listen((event) { print('event'); }, onDone: ()
   {
      print('loaded');
      handleResponse(request.status);
      if(callback != null) {
        callback(request.status);
      }
   }, onError: (e) { print('err' + e.toString()); });


}

出力は

Invalid CSS property name: -webkit-touch-callout
yeeep

最初の行がどこから来たのかわかりません。それが生成されたものであり、私のコードではないと確信しています。

4

2 に答える 2

1

デフォルトのHttpRequestコンストラクターのドキュメントは古くなっているようです。

それを機能させるには:

  • リクエストを送信するにrequest.send();は、の最後に追加する必要があります。submitHttpRequest
  • クリック時にリスナーを追加する方法を修正してください。submitHttpRequest('test.php')元のコードでは、 (つまりnull)の結果を に追加します..onClick.listen()。あなたはするべきだった: ..onClick.listen((_) => submitHttpRequest('test.php')).

作業バージョンは次のとおりです。

import 'dart:html';

void main() {
  query("#sample_text_id")
    ..text = "Click me!"
    ..onClick.listen((_) => submitHttpRequest('test.php'));
}

void submitHttpRequest(String phpFile, [json, callback(int status)]) {
  print('yeeep');
  var request = new HttpRequest();
  request.open('POST', 'php/$phpFile');
  request.onLoad.listen((event) { print('event'); }, onDone: () {
    print('loaded');
    handleResponse(request.status);
    if(callback != null) {
      callback(request.status);
    }
  }, onError: (e) { print('err' + e.toString()); });
  request.send(json);
}
于 2013-08-08T06:48:36.910 に答える
0

最後のステップとしてリクエストを送信する必要があります。

request.send();

私は通常、次のより簡単な方法を使用することを好みます。

HttpRequest.getString(URL)
.then((stringResponse) { print("loaded"); } )
.catchError((error) { print("error: $error"); } );
于 2013-08-08T06:52:43.067 に答える