Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Как подключить include в Javascript?

Как подключить include в Javascript?


     21.08.2017    Все вопросы » jQuery    1029

вопрос
Здравствуйте.
Подскажите как подключить php файл в javascript через include чтобы он работал?
Скрипт не встроенный, а подключается в head

javascript
var p = document.getElementById("list") ;
function add_list() {
 var span = document.createElement('span') ;
 span.innerHTML = '<li>{include file="engine/modules/fail.php"}</li>\
				<li>{include file="engine/modules/fail.php"}</li>\
				<li>{include file="engine/modules/fail.php"}</li>' ;
 p.appendChild(span) ;
} ;

html
<input type="button" onclick="add_list();" value="Добавить">
<ul id="list">
</ul>


Ответа пока нет


28 комментариев

lutskboy
Эксперт

lutskboy - 21 августа 2017 12:27 -

никак не получиться. делайте с помощью $.post $.get

kovalenko3331
Юзер

kovalenko3331 - 30 августа 2017 14:27 -

Заказал у lutskboy то, что мне нужно было. Оплатил 300р, и получил решение которое не применимо в современных реалиях. Поэтому делюсь с вами решением, и коротенько опишу, что нужно было сделать. Сначала последнее.
При множественном подключении
была нагрузка на сайт, даже при кэшировании.

Суть в том, что нужно подключить много таких файлов для подсчета количества новостей с определенным значением в доп поле. Если таких файлов много грузит сайт при открытии, даже при кэшировании.
lutskboy взялся за работу. Получил от него следующее.

Сайт открывается при этом шустрее, но результата нужно ждать очень долго. Если нужно получить подсчет большого количества новостей по доп полю, то ждать придется очень, и очень долго. Около 50 значений задержка около МИНУТЫ, вы только вдумайтесь в 2017 году нужно ждать минуту. Разумеется это не есть хорошо, точнее это совсем плохо, никто ждать не будет столько времени.
Сделано все через одно место, просто халтура какая то. И как всегда виноват заказчик, не так объяснил, и т.д. и т.п. А то, что это работает с таким ожидаем, которое в наше время вообще недопустимо, в счет исполнитель не берет.
Я бы не рекомендовал связываться с lutskboy.

LazyDev
php-developer

LazyDev - 30 августа 2017 14:55 -

kovalenko3331, май код :с можно сделать без нагрузки на страницу и ожидание.

Мой блог: LazyDev.pro
Если мне не интересен вопрос, не помогаю, и за этим по контактам прошу не писать.

kovalenko3331
Юзер

kovalenko3331 - 30 августа 2017 16:30 -

PunPun, первому кому написал по этому поводу это вам, так как код ваш. В скайпе две недели назад.

DomiTori
Юзер

DomiTori - 30 августа 2017 21:43 -

kovalenko3331,
в модуле есть кеширование, с ним быть не может открытие в минуту. У вас кеш включен на сайте?

kovalenko3331
Юзер

kovalenko3331 - 30 августа 2017 23:43 -

DomiTori, кэширование разумеется включено. Если прописать плюс-минус 50
<span data-xf="year" data-val="2016"><img src="{THEME}/images/gif.gif"></span>

с разными значениями, то пока все данные загрузятся по ajax нужно ждать ~ МИНУТУ.

kovalenko3331
Юзер

kovalenko3331 - 1 сентября 2017 17:40 -

Кто возмещается сделать это нормально, чтобы не было нагрузки, и результат был виден сразу, возможно делать один общий файл с кэшем, как это в 11.2 для тега {catnewscount id="X"} реализовано.

lutskboy
Эксперт

lutskboy - 1 сентября 2017 18:44 -

Я бы не рекомендовал связываться с lutskboy.

kovalenko3331, я могу сделать вполне нормально. с помощью всего одного запроса.
но в теме был вопрос на счет include javascript.
вы знаете что такое include?
ето значит что мы подключим файл CountXField.php столько раз , сколько вот таких тегов в шаблоне
{include file="engine/modules/CountXField.php?xf_name=test&xf_value=Музыка"}
но вы просили еще и с помощью javascript (а ето еще полнейший бред)
я вам так и сделал. мой скрипт использует и javascript и include. и посылает столько запросов к сайту , сколько тегов прописано в шаблоне.

а нельзя ли было сразу задать вопрос правильно?
cделать один общий файл с кэшем, как это в 11.2 для тега {catnewscount id="X"} реализовано


P.S и кстати. я не хочу ни с кем ссорится. если я кому то, что то делаю, я спрашиваю - устраивает ето или может подправить, переделать.
даже предоставил тестовый сайт. бери тестируй. оказалось все норм. ну норм так норм. с вас оплата - с меня скрипт.
и потом. когда вы поставили себе скрипт на сайт и увидели что не подходит, снова не попросили переделать.. написали в ЛС
не подойдет мне этот вариант.
нужно делать кэш одним файлом для всех значений, по типу как в дле 11.3 {catnewscount id="X"}
или что типа этого
......

Попробую пошаманить, может получится все же по аналогии сделать кэш одним файлом и вывод тегами.

kovalenko3331
Юзер

kovalenko3331 - 1 сентября 2017 22:01 -

lutskboy, если я подключу 50 тегов
<span data-xf="x" data-val="x"><img src="{THEME}/images/gif.gif"></span>
сколько времени пользователю нужно ждать пока он увидит результат загрузки данных последнего тега?
Как оказалось это второй раз когда я обратился к вам с заказом по дле. Если по первому заказу я остался доволен, все сделано было хорошо, вопросов нет, то по последнему заказу я этого сказать не могу.

lutskboy
Эксперт

lutskboy - 2 сентября 2017 12:48 -

kovalenko3331 , и снова не правильный вопрос. вы поймите, как сформулирован вопрос, так и мы программисты делаем по вашему требованию.
ну какое может быть
<span data-xf="x" data-val="x"><img src="{THEME}/images/gif.gif"></span>

если вы сами убедились в нерентабельности данного метода.
все, забыли про него.
теперь только по принципу
{countxfnews xfname="actor" xfvalue="Tom Kruz"}

kovalenko3331
Юзер

kovalenko3331 - 3 сентября 2017 13:08 -

теперь только по принципу
{countxfnews xfname="actor" xfvalue="Tom Kruz"}

Это вы сделаете, или это предложение как можно сделать?

lutskboy
Эксперт

lutskboy - 3 сентября 2017 13:49 -

и то и другое

kovalenko3331
Юзер

kovalenko3331 - 15 сентября 2017 10:12 -

lutskboy, от вас ждать какого то варианта по данной теме?

lutskboy
Эксперт

lutskboy - 15 сентября 2017 13:31 -

я бесплатно новую реализацию делать не буду

kovalenko3331
Юзер

kovalenko3331 - 15 сентября 2017 15:11 -

Меньшего я и не ожидал.
Тогда сделайте, то о чем вас изначально просили собственно в самом вопросе и в личке, и за что вам заплатили деньги.
Потому что ваше
сделать могу
но по своему
но как бы не делать ето действительно сложноватые запросы

сделаю все с нуля

и в ответ тут же в теме
если вы сами убедились в нерентабельности данного метода.
все, забыли про него.

мягко говоря меня не устраивает, и забывать я ничего не буду.

lutskboy
Эксперт

lutskboy - 15 сентября 2017 15:14 -

говорю же, что есть другой способ без всяких там js и include

kovalenko3331
Юзер

kovalenko3331 - 15 сентября 2017 15:36 -

Да мне важно с или без, главное чтобы это работало. Вы изначально поняли, что мне было нужно, и сделали это по своему. Но это не работает нормально, в чем вы сами и признались.

lutskboy
Эксперт

lutskboy - 15 сентября 2017 15:39 -

теперь только по принципу
{countxfnews xfname="actor" xfvalue="Tom Kruz"}

LazyDev
php-developer

LazyDev - 15 сентября 2017 17:02 -

kovalenko3331, напишите мне, реализую.

Мой блог: LazyDev.pro
Если мне не интересен вопрос, не помогаю, и за этим по контактам прошу не писать.

LazyDev
php-developer

LazyDev - 3 сентября 2017 13:53 -

Нагрузка от одного запроса никуда не денется.

Мой блог: LazyDev.pro
Если мне не интересен вопрос, не помогаю, и за этим по контактам прошу не писать.

Pringles
Юзер

Pringles - 2 сентября 2017 14:08 -

lutskboy, если я подключу 50 тегов

Ну дак вы же сами нагрузку и делаете. 50 тегов это 50 запросов в базу данных, и от них никуда не деться. Да, после запроса это можно закешировать, но всё равно при истечении кеша это снова 50 запросов в один момент.

kovalenko3331
Юзер

kovalenko3331 - 2 сентября 2017 14:16 -

В том и была задача сделать так чтобы не было нагрузки, или минимальная.
По поводу 50 тегов lutskboy знает о чем я.

Pringles
Юзер

Pringles - 2 сентября 2017 14:54 -

Вашу задачу можно решить одним запросом.
Суть в том, что с помощью такого запроса мы выберем все посты сразу, потом переберем через цикл и запишем массивы данных для всех существующих доп. полей и затем запишем подсчитанное количество таких массивов в кеш. следовательно плюс в том что мы лишаемся всех лишних запросов и повышая производительность

kovalenko3331
Юзер

kovalenko3331 - 3 сентября 2017 15:04 -

Цитата: PunPun
kovalenko3331, май код :с можно сделать без нагрузки на страницу и ожидание.

Цитата: PunPun
Нагрузка от одного запроса никуда не денется.

Подскажите тогда как лучше сделать?

nowheremany
Эксперт

nowheremany - 3 сентября 2017 21:05 -

engine/ajax/count.xf.php

<?php 

define('DATALIFEENGINE', true);
define( 'ROOT_DIR', substr( dirname(  __FILE__ ), 0, -12 ) );
define( 'ENGINE_DIR', ROOT_DIR . '/engine' );

include ENGINE_DIR.'/data/config.php';

// date_default_timezone_set ( $config['date_adjust'] );
// $_TIME = time();
// $thisdate = date( "Y-m-d H:i:s", $_TIME );

require_once ENGINE_DIR.'/classes/mysql.php';
require_once ENGINE_DIR.'/data/dbconfig.php';
require_once ENGINE_DIR . '/modules/functions.php';

$xf_counts = get_vars('counts_xf');
$xf_counts_change = !is_array($xf_counts);

$result = array();
$query = array();

foreach(is_array($_GET['xf'])?$_GET['xf']:array($_GET['xf']=>$_GET['val']) as $i => $v){
        list($name,$value) = explode('==',$v)
	$name = $db->safesql(trim(stripslashes(strip_tags($name))));
	$value = $db->safesql(trim(stripslashes(strip_tags($value))));
	
	if($name=='')
		continue;
	
	$inx = 's'.(count($result));
	
	$count = 0;
	if(is_array($xf_counts) and array_key_exists($name.'=='.$value,$xf_counts)){
		$count = $xf_counts[$name.'=='.$value];
	} else	
	if($value!=''){
		$query[] = "(SELECT COUNT(*) as count FROM ".PREFIX."_post WHERE SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '{$name}|', -1 ) ,  '||', 1 ) LIKE '%{$value}%') as {$inx}";
	} else {
		$query[] = "(SELECT COUNT(*) as count FROM ".PREFIX."_post WHERE xfields LIKE '%{$name}|{$value}%') as {$inx}";
	}
	
	$result[$inx] = array($name,$value,$count);
}

if(count($query)>0){
	$row = $db->super_query('SELECT '.implode(',',$query));
	if(is_array($row))
		foreach($row as $i => $v)
			if(is_array($result[$i])){
				$xf_counts[$result[$i][0].'=='.$result[$i][1]] = $result[$i][2] = $v;
				$xf_counts_change = true;
			}
	
}

if($xf_counts_change){
	set_vars('counts_xf',$xf_counts);
}

@header( "Content-type: text/html; charset=" . $config['charset'] );
echo json_encode(array_values($result));
die();

?>



some.tpl
			<span class="news-count" data-value="country==Япония">0</span>
<span class="news-count" data-value="country==Чехия">0</span>
			<span class="news-count" data-value="year==1997">0</span>


main.tpl
			<script>
$(function(){
				var xf_count = {};$('.news-count').each(function(){var d=$(this).data();xf_count[]=d.value});$.getJSON('http://mangaclub/engine/ajax/count.xf.php',{xf:xf_count},function(d){for(var i in d){$('.news-count[data-value="'+d[i][0]+'=='+d[i][1]+'"]').html(d[i][2])}})
})
			</script>

Благодарность принимаю тут Связь

kovalenko3331
Юзер

kovalenko3331 - 5 сентября 2017 13:50 -

Если подключить два и более тега с одинаковым значением data-name="country"
<span class="news-count" data-name="country" data-value="Чехия">0</span>
<span class="news-count" data-name="country" data-value="Япония">0</span>
показывает результат подсчета только последнего тега.

nowheremany
Эксперт

nowheremany - 12 сентября 2017 13:21 -

Поправил свой ответ, по идее должно работать, я не проверял

Благодарность принимаю тут Связь

kovalenko3331
Юзер

kovalenko3331 - 12 сентября 2017 15:05 -

К сожалению не работает, и в изначальном варианте считает новости на модерации, добавлял AND approve=1 но все равно считало все новости, а не только опубликованные.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

 21.08.2013 jarrro  jQuery
наверх