所以我尝试使用AJAX在dart客户端和php服务器端之间进行通信。由于无法直接执行。我将dart编译为javascript,然后在apache服务器上运行它。
json数据在客户端生成,但服务器没有响应
飞镖码
import 'dart:html';
import 'dart:json';
void main() {
query("#clicker").on.click.add(callServer);
}
void callServer(Event event) {
var data ={ 'name':"sendname"}
,jsondata=stringify(data);
print(jsondata);
var req = new HttpRequest();
req.open('post','http://localhost:8080/darttest/server.php',true);
//req.setRequestHeader('Content-type','application/json');
req.send(jsondata);
print(req.responseText);
}
php方面我只是回应收到的内容
<?php
$name = $_POST['name'];
echo $name;
?>
这是我第一次尝试使用dart编程,所以请告诉我这种方法是否可行
答案 0 :(得分:2)
localhost:8080是否同时提供静态Dart(作为JS)和php?如果没有,您可能会遇到access-control-allow-origin
问题(这是一个浏览器安全问题)。
这可以防止一个站点将日期发布到另一个站点。
变通:
有关更多信息,请阅读以下内容:
更新此处描述了解决方法3(适用于Chrome / Dartium): https://groups.google.com/a/dartlang.org/d/msg/misc/kg13xtD7aXA/uxeXXrw3CG8J
您可以添加参数&#34; - disable-web-security&#34;到chrome.exe以禁用跨域检查。
(当然,这只在您开发时有用)
答案 1 :(得分:1)
要阅读回复,您必须将代码放在readyStateChange
上的回调中:
var req = new HttpRequest();
req.open('post','http://localhost:8080/darttest/server.php',true);
req.on.readyStateChange.add((e){
if (req.readyState == HttpRequest.DONE && req.status == 200){
print(req.responseText);
}
});
req.send(jsondata);
使用您的代码,当您尝试读取响应时,未处理http请求。您必须等待请求完成才能阅读响应。
答案 2 :(得分:0)
这不是在dart和php之间发送数据。这是从dart发送数据到php !!!