在php和dart之间发送数据

时间:2013-01-28 08:32:44

标签: php ajax post dart

所以我尝试使用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编程,所以请告诉我这种方法是否可行

3 个答案:

答案 0 :(得分:2)

localhost:8080是否同时提供静态Dart(作为JS)和php?如果没有,您可能会遇到access-control-allow-origin问题(这是一个浏览器安全问题)。

这可以防止一个站点将日期发布到另一个站点。

变通:

  1. 确保提供php的站点返回正确的CORS标头:http://enable-cors.org/server.html
  2. 从同一网址(localhost:8080)
  3. 提供静态Dart / JS文件

    有关更多信息,请阅读以下内容:

    更新此处描述了解决方法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 !!!