инъекция AJAX с использованием ScriptInjector GWT - PullRequest
1 голос
/ 22 мая 2019

Я хочу добавить ajax (для извлечения данных из веб-службы) в мой HTML-код, созданный GWT.

Я попытался внедрить cdn в jQuery и мой скрипт, используя ScriptInjector.

вот как я ввел cdn в заголовок моего html:

Element head = Document.get().getElementsByTagName("head").getItem(0);
ScriptElement sce = Document.get().createScriptElement();
sce.setSrc("http://code.jquery.com/jquery-3.1.1.min.js");
head.appendChild(sce);

это сработало, я проверил свою страницу, и она была добавлена ​​в заголовок.

А вот как я пытался внедрить скрипт для получения данных из моего веб-сервиса:

ScriptInjector.fromString(" $.ajax({\n" +
"  dataType: \"json\",\n" +
"  url: \"http://localhost/geoTrackerTest.php?id=15\",\n" +
"  data: \"data\",\n" +
"  success: function(data){\n"
+"   console.log(\"success\");" +
"    document.getElementById(\"frigoTempAjax\").innerHTML = data[0].frigo_temperature;\n" +
"  }\n" +
"});").inject();

Я ожидаю получить сообщение об успехе на консоли и получить значение в div, которое имеет указанный Id, но я получаю следующую ошибку:

ReferenceError: $ is not defined

1 Ответ

2 голосов
/ 22 мая 2019

ScriptInjector по умолчанию внедрит в скрытый iframe, где работает ваш код GWT; вместо этого вам нужно указать, чтобы он внедрялся в вашу страницу, где живет скрипт jQuery.

ScriptInjector.fromString(…).setWindow(ScriptInjector.TOP_WINDOW).inject();

Но в этом случае может быть лучше заменить код jQuery эквивалентным кодом GWT (используя com.google.gwt.http или com.google.gwt.xhr)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...