在Dart中发出POST Http请求(XMLHttpRequest)

时间:2013-08-07 22:17:00

标签: javascript xmlhttprequest httprequest dart

我尝试在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

我不知道第一行来自哪里,我很确定这是生成的而且我的代码都没有。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您需要发送请求作为最后一步:

request.send();

我通常更喜欢使用以下更简单的方法:

HttpRequest.getString(URL)
.then((stringResponse) { print("loaded"); } )
.catchError((error) { print("error: $error"); } );