【问题标题】:Making a POST HttpRequest (XMLHttpRequest) in Dart在 Dart 中创建一个 POST HttpRequest (XMLHttpRequest)
【发布时间】:2013-08-07 22:16:59
【问题描述】:

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

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

【问题讨论】:

    标签: javascript xmlhttprequest httprequest dart


    【解决方案1】:

    默认 HttpRequest 构造函数的文档似乎已经过时了。

    让它发挥作用:

    • 您必须在submitHttpRequest 末尾添加request.send(); 才能发送请求。
    • 修正了在点击时添加监听器的方式。在您的原始代码中,您将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);
    }
    

    【讨论】:

      【解决方案2】:

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

      request.send();
      

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

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

      【讨论】:

      • 太糟糕了,它没有与原始实例化对象一样多的属性来检索状态代码等:(
      猜你喜欢
      • 2013-09-05
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 2015-10-16
      • 1970-01-01
      • 2021-12-28
      相关资源
      最近更新 更多