我尝试在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
我不知道第一行来自哪里,我很确定这是生成的而且我的代码都没有。
答案 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"); } );