У меня есть две функции, объявленные в том же файле .js
. Предполагается, что первая функция httpGet
делает запросы к API RESTful с использованием метода GET
. Эта функция является той, которую я использовал раньше, и я знаю, что она работает. Вторая функция под названием basicAccess
получает входные данные из HTML-формы.Вызов функции внешней функции внутри другой функции прекращает выполнение функции
Выполняется все до var httpreq = httpGet("127.0.0.1:5000")
вызов функции в функции basicAccess
. Как только он попадает в эту строку, скрипт перестает оценивать дальнейшие строки кода.
Я не хочу загромождать функцию basicAccess
с помощью функции httpGet
. В идеале мне также хотелось бы, чтобы совпадение регулярных выражений находилось в его собственной функции, но когда я попытался это, он также прекратил выполнение сценария при выполнении строк, когда я попытаюсь ссылаться на функцию снаружи.
Пожалуйста, дайте мне знать, если у вас есть понимание того, как я приближаюсь к этому. Досконально знал JavaScript и даже не знал, как адекватно искать это на форуме.
function httpGet(theUrl) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", theUrl, false); // false for synchronous request
xmlHttp.send(null);
return xmlHttp.responseText;
}
function basicAccess (form) {
start =form.StartDate.value;
end =form.EndDate.value;
ethosBoundary = "2015-12-01";
arg = 'false';
re = /^\d{4}-\d{1,2}-\d{1,2}$/;
if(form.StartDate.value != '' && !form.StartDate.value.match(re)) {
alert("Invalid date format: " + form.StartDate.value);
form.StartDate.focus();
return false;
}
var httpreq = httpGet("127.0.0.1:5000");
if (start > end){
alert ("Error: " + "The start date: " + start + ", occurs after the end date: " + end);
return;}
if ((start < ethosBoundary) && (end < ethosBoundary))
arg = 'both less';
if ((start > ethosBoundary) && (end > ethosBoundary))
arg = 'both greater';
if ((start < ethosBoundary) && (end > ethosBoundary))
arg = 'start less end greater';
alert ("you typed: " + arg)
}
Я задам очевидный вопрос - почему вы делаете синхронный звонок? Это можно сделать асинхронно, используя обратные вызовы –
Посмотрите на консоль браузера. Есть ли ошибки/уведомления? Я мог представить, что код завершается, если вы делаете синхронный запрос на другой URI, но CORS не включен. –
Что вы делаете с 'httpreq', потому что вы, кажется, не используете его или не отправляете что-либо, поэтому почему этот вызов:' httpGet ("127.0.0.1:5000"); '? – Anonymous0day