Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2014, 06:56   #1
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию Не удается выделить отдельную функцию.

В общем есть страница с предпросмотром, она содержит следующий скрипт, скажу заранее, ОН РАБОТАЕТ, т.е. проблем с расположением файлов/тегов нет.
Код:
	function preview()  
	{  
		$.ajax({  
			url: "http://mysite.ru/templates/blog_post.php",  
			cache: false,
			type: "post",
			data: $(".blog_post_form").serialize(),
			success: function(html)
			{  
				$(".preview").html(html);  
			}
		});
	} 

	$(document).ready(function(){
		preview();
		setInterval('preview()', 5000);  
	});
Эта страница подгружается include в php скрипте.
Надо функцию preview вынести в родительский файл (где происходит include), чтобы на странице осталось только
Код:
$(".preview").html(preview1("http://mysite.ru/templates/blog_post.php", ".blog_post_form"));
ну или сделать плагин, чтобы функция могла быть применима к самому объекту.
Код:
$(".preview").preview1("http://mysite.ru/templates/blog_post.php", ".blog_post_form");
Я для первого варианта попробовал сделать так, но у меня ничего не получилось, всегда возвращает ErrorError, т.е. запрос ajax не проходит. Почему это может быть? Как исправить?
Код:
	function preview1 (template, form)
	{
		$.ajax({  
			url: template,  
			cache: false,
			type: "post",
			data: $(form).serialize(),
			success: function(html){  
				return html;  
			},
			error: function(){  
				return 'Error';  
			}
		});
		return 'ErrorError';  
	}
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 26.04.2014, 10:34   #2
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

Всё потому, что Вы возвращаете результат работы AJAX внутрь функции preview1 и ничего с ним не делаете, а сама функция возвращаете всегда 'ErrorError'.

Вам нужно вернуть то, что вернул AJAX:

PHP код:
function preview1(templateform) {
    return $.
ajax({
        
urltemplate,
        
cachefalse,
        
type"post",
        
data: $(form).serialize(),
        
success: function (html) {
            return 
html;
        },
        
error: function () {
            return 
'Error';
        }
    });

ATL вне форума Ответить с цитированием
Старый 26.04.2014, 10:54   #3
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Теперь выдает пустоту как результат аякса (test заменяется на пустоту)...
Код:
$(".preview").html("test");
$(".preview").html(preview1("http://mysite.ru/templates/blog_post.php", ".blog_post_form"));
Код:
	function preview1 (template, form)
	{
		return $.ajax({  
			url: template,  
			cache: false,
			type: "post",
			data: $(form).serialize(),
			success: function(html){  
				return html;  
			},
			error: function(){  
				return 'Error';  
			}
		});
	}
Замена success ичего не дала. Так тоже выводится пустота:
Код:
			success: function(html){  
				return "fadfs";  
			}
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 26.04.2014, 18:13   #4
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

PHP код:
function preview1(templateform) {
    
alert("Внимание, мы находимся внутри функции preview1");

    return $.
ajax({
        
urltemplate,
        
cachefalse,
        
type"post",
        
data: $(form).serialize(),
        
success: function (html) {
            
alert("Ура, товарищи, функция выполнилась успешно и вернула результат: " html);
            return 
html;
        },
        
error: function () {
            
alert("Всё пропало");
            return 
'Error';
        }
    });

ATL вне форума Ответить с цитированием
Старый 26.04.2014, 19:37   #5
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Проходит "Ура товарищи..."+верный код страницы, но сам код не хочет интегрироваться в страницу. Почему это может быть?
Код:
<div class="preview">
</div> 
<script>
	function local_preview()  
	{  
		$(".preview").html(preview1("http://mysite.ru/templates/blog_post.php", ".blog_post_form"));
	} 
	$(document).ready(function(){
		local_preview();
		setInterval('local_preview()', 5000);  
	}); 
</script>
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 27.04.2014, 21:45   #6
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

Про асинхронность в JavaScript почитайте.
Тут у товарища тоже непонимание было: http://www.programmersforum.ru/showthread.php?p=1351874
^-.-^ My GitHub

Последний раз редактировалось Fenex; 27.04.2014 в 21:54.
Fenex вне форума Ответить с цитированием
Старый 28.04.2014, 18:13   #7
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от Fenex Посмотреть сообщение
Про асинхронность в JavaScript почитайте.
Тут у товарища тоже непонимание было: http://www.programmersforum.ru/showthread.php?p=1351874
Спасибо, сделал.

Код:
function preview1(template, form, callback) { 
		$.ajax({ 
			url: template, 
			cache: false, 
			type: "post", 
			data: $(form).serialize(), 
			success: function (html) { 
				callback(html); 
			}, 
			error: function () { 
				callback('Error'); 
			} 
		}); 
	}
Код:
preview1("http://mysite.ru/templates/blog_post.php", ".blog_post_form", function(html) { $(".preview").html(html); });
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод на отдельную страницу 7hp PHP 0 21.09.2011 17:09
Как использовать отдельную программу как функцию Hemul Общие вопросы C/C++ 1 02.05.2011 19:11
Проблема при создании списков(динамич. структуры) через отдельную функцию(вне main) Aerial Общие вопросы C/C++ 1 22.09.2010 22:39
Вызвать отдельную функцию в длл maxrfons Общие вопросы .NET 9 31.07.2009 20:44