如何在Dart中从HTML文件调用方法?

时间:2019-04-12 17:48:45

标签: html dart xmlhttprequest

我想使用Dart将xmlhttprequest发送到我的服务器。我有一个html文件,它可以实际使用。有没有办法从dart中的html文件运行方法?还是可以用飞镖代码重写此代码?作为回应,我得到一个JSON,其中包含带有两个字段的对象:名称和持续时间。

// my html file 
<script>

    function createCORSRequest() {
        let xhr = new XMLHttpRequest();


        if ("withCredentials" in xhr) {
            xhr.open('GET', 'http://localhost:8080/sounds', true);
        } else {
            if (typeof XDomainRequest != "undefined") {
                xhr = new XDomainRequest();
                xhr.open('GET', 'http://localhost:8080/sounds');
            } else {
                xhr = null;
            }
        }
        return xhr;
    }

    function makeCorsRequest() {
        var request = createCORSRequest();
        if (!request) {
            alert('CORS not supported');
            return;
        }

// here I get the names of the objects
        request.onload = function () {
            var movies = request.response;
            for (const movie of movies) {
                console.log(movie.movieName)
            }
        };

        request.onerror = function () {
            alert("Request failed");
        };
        request.responseType = 'json';
        request.send();
    }
</script>

我从服务器得到的JSON示例:

[
  {
    "movieName": "Dog and the main Dogger",
    "duration": "3:30:03"
  },
  {
    "movieName": "Hunger Games",
    "duration": "3:30:03"
  },
  {
    "movieName": "Robot Chicken",
    "duration": "3:30:01"
  },
  {
    "movieName": "Moskovskaya techka",
    "duration": "3:30:03"
  },
  {
    "movieName": "Terminator",
    "duration": "3:30:03"
  }
] 

我希望像在我的JSON文件中一样,从Dart中的HTML获取名称(movieName字段)。

1 个答案:

答案 0 :(得分:0)

您可以使用http软件包,通过XMLRequest将支持添加到BrowserClient

这里是一个例子:

var browser = BrowserClient();

var response = await browser.get('http://localhost:8080/sounds');

var body = response.body; //Here you can use 'json.encode' from the `dart:convert` package to parse the json list.