#jquery #ajax #dojo
#jquery #ajax #dojo
Вопрос:
Я разместил текстовый файл с именем hi.txt в папке webapps моего сервера tomcat. Я могу получить доступ к URL-адресу в браузере, но, как ни странно, мои вызовы AJAX в приведенном ниже коде для отображения содержимого файла не работают для той же ссылки (//hostname:8080/dojo/hi.txt ) .
Я получаю сообщение об ошибке как ошибка запроса: не удается загрузить статус URL: 0. Кто-нибудь может предложить, как можно исправить эту проблему? Я использую функцию AJAX в DOJO.
P.S: Чтобы увидеть ошибку в приведенном ниже коде, скопируйте ее в file_name.txt файл, а затем сохранить как file_name.html и открыть в IE или Firefox.
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Demo: dojo/request/xhr</title>
<link rel="stylesheet" href="http://dojotoolkit.org/documentation/tutorials/resources/style/style.css" media="screen">
<link rel="stylesheet" href="http://dojotoolkit.org/documentation/tutorials/1.6/resources/style/demo.css" media="screen">
</head>
<body>
<h1>Demo: dojo/request/xhr</h1>
<p>Click the button below to see dojo/request/xhr in action.</p>
<div>
<button id="textButton">Request Text File</button>
</div>
<br /><br />
<div id="resultDiv">
</div>
<!-- load dojo and provide config via data attribute -->
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.8.5/dojo/dojo.js"></script>
<script>
require(["dojo/dom", "dojo/on", "dojo/request", "dojo/domReady!"],
function(dom, on, request){
// Results will be displayed in resultDiv
var resultDiv = dom.byId("resultDiv");
// Attach the onclick event handler to the textButton
on(dom.byId('textButton'), "click", function(evt){
// Request the text file
request.get("http://localhost:8080/dojo/hi.txt").then(
function(response){
// Display the text file content
resultDiv.innerHTML = "<pre>" response "</pre>";
},
function(error){
// Display the error returned
resultDiv.innerHTML = "<div class="error">" error "<div>";
}
);
});
}
);
</script>
</body>
</html>
Комментарии:
1. Вы используете разные домены
ajax.googleapis.com, dojotoolkit.org and localhost:8080
. Вызовы AJAX с разных доменов не разрешены. Попробуйте загрузить исходный код dojo на свой локальный сервер tomcat и просто используйте ‘request.get(«dojo/hi.txt «)’ в вашем коде, который должен работать. Если вы хотите, чтобы междоменная работа работала, вам нужно использоватьJSONP
AJAX-запрос в вашем коде.2. @frank Можете ли вы уточнить эту часть, мне неясен предложенный вами подход «Попробуйте загрузить исходный код dojo на свой локальный сервер tomcat и просто используйте ‘request.get(«dojo/hi.txt «)’ в вашем коде». Я немного новичок в настройке dojo в tomcat, поэтому, если вы можете немного подробно объяснить мне шаги, это будет приятно.
Ответ №1:
Вам необходимо загрузить исходный код dojo отсюда. И поместите файлы на том же уровне, что и файл h1.txt на локальном сервере tomcat. а затем измените следующую строку в своем коде.
От
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.8.5/dojo/dojo.js"></script>
Для.
<script src="dojo/1.8.5/dojo/dojo.js"></script>
Ваша структура каталогов на сервере должна выглядеть следующим образом.
/index.html
/dojo/h1.txt
/dojo/1.8.5/dojo/<source files and subdirectories>
/dojo/1.8.5/dojox/<source files and subdirectories>
/dojo/1.8.5/dijit/<source files and subdirectories>