Дарт: AJAX отправить форму
Пожалуйста, обратите внимание: я не заинтересован в использовании Polymer для этого; Я хочу использовать «чистый» дартс!
Я пытаюсь создать простой экран входа для моего приложения Dart, и мне трудно получить две переменные формы (email
а такжеpassword
) POST на стороне сервера:
Вот мой основной HTML-файл (myapp.html
):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Sign in</title>
<link rel="stylesheet" href="assets/myapp/myapp/myapp.css">
<link rel="stylesheet" href="assets/myapp/bootstrap/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<form id="signinForm" method="POST" class="form-signin">
<h2 class="form-signin-heading">Please sign in</h2>
<input type="text" class="input-block-level" name="email" placeholder="Email address">
<input type="password" class="input-block-level" name="password" placeholder="Password">
<button class="btn btn-large btn-primary" id="signinBtn" type="submit">Sign in</button>
</form>
</div>
<script type="application/dart" src="myapp.dart"></script>
<script src="packages/browser/dart.js"></script>
</body>
</html>
Вот мой основной дартс файл (myapp.dart
):
import 'dart:html';
void main() {
querySelector("#signinForm")
..onClick.listen(handle);
}
void handle(MouseEvent mouseEvent) {
mouseEvent.preventDefault();
FormElement formElement = mouseEvent.target as FormElement;
var url = "http://localhost:8080/myapp/signinService";
var request = HttpRequest.request(
url,
method: formElement.method,
sendData: new FormData(formElement)
).then(onDataLoaded);
}
void onDataLoaded(HttpRequest req) {
String response = req.responseText;
if(response == 1)
window.alert("You are signed in!");
else
window.alert("Sign in failed. Check credentials.");
}
Когда я запускаю это в браузере, я вижу, что появляется экран входа, но когда я нажимаю кнопку входа, ничего не происходит, и Firebug выдает кучу ошибок в кросс-скомпилированном, запутанном, минимизированном JavaScript:
: CastError: Преобразование значения типа qE в несовместимый тип Yu
Я хочу, чтобы это был запрос AJAX, чтобы пользовательне должен испытать перезагрузку страницы (здесь мы хотим быть одностраничным приложением).
Есть идеи, что здесь происходит? Я почти на 100% уверен, что проблема не на стороне сервера, поэтому сейчас я не публикую код сервера. Но я буду обновлять мой вопрос с кодом сервера, если это будет необходимо.