Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вызов функции из другого файла (https://javascript.ru/forum/misc/54972-vyzov-funkcii-iz-drugogo-fajjla.html)

dmitriy94 08.04.2015 14:47

Вызов функции из другого файла
 
Есть индексный файл с разметкой. В нем есть форма. Подключаю файл с функцией, затем подключаю файл с вызовом этой функции. Консоль выдает ошибку, ругается, что функция не определена. Файлы подключены верно (по отдельности работают), порядок подключения тоже верный. Гугл говорит, что так работать должно. Заранее благодарю за ответы.

ksa 08.04.2015 15:25

Цитата:

Сообщение от dmitriy94
Файлы подключены верно (по отдельности работают), порядок подключения тоже верный. Гугл говорит, что так работать должно.

Значит и работать должно! :yes:

dmitriy94 08.04.2015 17:55

Должно, однако не работает. Либо гугл нагло врет, либо я туплю, либо тут какая-то необъяснимая магия. есть 3 файла index.php, registration.js, data.js.
index.php:
<html>
	<head>
		<script language="JavaScript" type="text/javascript" src="js/jquery-1.11.2.js"></script>
		<script language="JavaScript" type="text/javascript" src="js/data.js"></script>
		<script language="JavaScript" type="text/javascript" src="js/registration.js"></script>
	</head>
...

data.js:
function fp_submit(form, status, url, datatype)
	{
            тело функции
         }

registration.js:
$(кнопка).click(function()
	{
		var form = значение;
		var status = значение;
		var url = значение;
		var datatype = значение;
		fp_submit(form, status, url, datatype);
	});

Ругается на вызов функции fp_submit в файле registration.js

tourniquet 08.04.2015 19:53

Попробуй поставить js в конце фаила, перед закрывающим тегом body

ksa 09.04.2015 08:30

Цитата:

Сообщение от dmitriy94
Либо гугл нагло врет, либо я туплю, либо тут какая-то необъяснимая магия

Ты поставил себя в один ряд с гигантской корпорацией и магией - это круто! :D

ksa 09.04.2015 08:35

Цитата:

Сообщение от dmitriy94
Должно, однако не работает.

Бивас, тест! (с)

tmp.html

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src='tmp.js'></script>
<script src='tmp1.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
</script>
</head>
<body>
<button>Test</button>
</body>
</html>


tmp.js

function test(){
	alert('Ok');
};


tmp1.js

$(function(){
	$('button').click(function(){
		test();
	});
});


Все прекрасно работает!

dmitriy94 10.04.2015 08:11

Спасибо, разобрался. Есть еще такой вопрос, хотя с ним, скорее всего, следовало бы в раздел ajax идти. Но чтобы лишний раз не создавать новую тему, спрошу здесь. Есть у меня функция, который отправляет данные из формы ajax-ом. Затем я вызываю эту функцию и подставляю нужные параметры при нажатии на кнопку. Мне изначально неизвестно, какие типы данных будут выводить здесь, каким методом это будет делаться, и будет ли вообще что-либо выводиться. Функцию там вызвать не получится. И вот вопрос в том, как это реализовать. Спасибо.

dmitriy94 10.04.2015 08:59

Я полагаю, придется использовать прототипное наследование?

ksa 10.04.2015 09:07

Цитата:

Сообщение от dmitriy94
И вот вопрос в том, как это реализовать.

Задачи типа "пойди туда, не зная куда и принеси то, не зная что" делаются только за деньги и при том за почасовую оплату...

dmitriy94 10.04.2015 12:20

Цитата:

Сообщение от ksa (Сообщение 365857)
Задачи типа "пойди туда, не зная куда и принеси то, не зная что" делаются только за деньги и при том за почасовую оплату...

Задача вполне себе конкретная. Есть отдельная функция отправки данных, например "submit", внутри нее есть ajax-запрос, в запросе есть функция success. По нажатию кнопки должна создаваться еще одна функция, например "result", затем вызывается функция "submit", в которой вызывается функция "result". Я понимаю, что функциями это сделать нереально. Поэтому возникает вопрос, можно ли вообще это сделать? Я думаю, что если и можно, то только с помощью наследования. Я не прошу написать мне готовый код. Хотя бы натолкнуть на мысль.


Часовой пояс GMT +3, время: 08:19.