2

だから私はAJAXを使用してdartクライアント側とphpサーバー側の間で通信しようとしています. 直接実行はできないため。ダーツを 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;

?>

これはダートプログラミングでの私の最初の試みです。このアプローチが可能かどうか教えてください

4

3 に答える 3

2

localhost:8080 は静的な Dart (JS として) と php の両方を提供していますか? そうでない場合は、問題が発生している可能性がありますaccess-control-allow-origin(これはブラウザーのセキュリティの問題です)。

これにより、あるサイトが別のサイトに日付を投稿するのを防ぎます。

回避策:

  1. PHP を提供するサイトが正しい CORS ヘッダーを返すことを確認してください: http://enable-cors.org/server.html
  2. 同じ URL (localhost:8080) から静的な Dart/JS ファイルを提供します。

詳細については、次を参照してください。

更新の回避策 3 については、こちら (Chrome / Dartium の場合) で説明しています: https://groups.google.com/a/dartlang.org/d/msg/misc/kg13xtD ​​7aXA/uxeXXrw3CG8J

パラメータ「--disable-web-security」を chrome.exe に追加して、クロス ドメイン チェックを無効にすることができます。

(もちろん、これは開発中にのみ役立ちます)

于 2013-01-28T08:40:09.163 に答える
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 要求が処理されませんでした。応答を読み取るには、要求の完了を待つ必要があります。

于 2013-01-28T08:44:32.963 に答える
0

これは、dart と php の間でデータを送信していません。これは dart から php にデータを送信しています!!!

于 2013-03-26T18:06:48.977 に答える