Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 06.01.2016, 02:20
Интересующийся
Отправить личное сообщение для CHER84 Посмотреть профиль Найти все сообщения от CHER84
 
Регистрация: 06.01.2016
Сообщений: 11

<?php
if($_POST) {exit('<span>Text</span><script> 
$(function() {
 alert(1)
});
</script>');
}
?>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$(function() {
    $('button').click(function() {
        $.post(location, {a:1}, function(d) {
            $('#as').html(d)
        })
    })
});
</script>
</head>
<body>
<div id="as"></div>
<button>GO</button>
</body>
<html>

я пару недописанных символов добавил, да, код работает. Спасибо, сейчас буду размышлять над ним.
И вообще большое спасибо за оперативный ответ, я не ожидал такого оперативного отклика.
А код должен сгенерироваться именно на динамической странице, поэтому не имею возможности заранее написать его в статической.
Ответить с цитированием
  #12 (permalink)  
Старый 06.01.2016, 02:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от CHER84
А код должен сгенерироваться именно на динамической странице
Все может быть, но ведь есть такое понятие как аргументы, а что еще надо... Если json-ответ содержит ключ exe, то вложенный его массив описывает функции с их аргументами, которые нужно выполнить на клиенте. А на клиенте объект exe = {name1:function() {...}, name2:function(arguments){...}}

Если подумать, то многое сводится к универсальности, а значит можно иметь "скелет готовый". Хотя все может быть, может и нужна необходимость гонять скрипты между сервером и клиентом, трудно сказать не видя и не зная всего.
Ответить с цитированием
  #13 (permalink)  
Старый 06.01.2016, 02:30
Интересующийся
Отправить личное сообщение для CHER84 Посмотреть профиль Найти все сообщения от CHER84
 
Регистрация: 06.01.2016
Сообщений: 11

Я не считаю себя особо опытным в этом деле, поэтому думаю, что Вы правы. Возможно через какое-то время я к этому и приду, а пока стараюсь писать код на уровне своего понимания =)
Ответить с цитированием
  #14 (permalink)  
Старый 06.01.2016, 02:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от CHER84
я пару недописанных символов добавил
Каких, фигурные скобки условия? Они не нужны в данном случае.
Ответить с цитированием
  #15 (permalink)  
Старый 06.01.2016, 02:41
Интересующийся
Отправить личное сообщение для CHER84 Посмотреть профиль Найти все сообщения от CHER84
 
Регистрация: 06.01.2016
Сообщений: 11

да, открывающую фигурную скобку {
и закрывающий ?>
я в notepad++ работаю он код подсвечивает, а без этих символов каша получалась, да и вообще если есть закрывающая скобка - должна быть и открывающая, а если где-то мы сказали, что с этой строчки пойдет php код, то должны сказать, где этот код закончится.
Ответить с цитированием
  #16 (permalink)  
Старый 06.01.2016, 02:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Я исправил, просто вы взяли код до исправления. Если условие или тело цикла это одна операция, то фигурные скобки не нужны, это уже роскошь. )
Ответить с цитированием
  #17 (permalink)  
Старый 06.01.2016, 02:56
Интересующийся
Отправить личное сообщение для CHER84 Посмотреть профиль Найти все сообщения от CHER84
 
Регистрация: 06.01.2016
Сообщений: 11

Позвольте еще вопрос
$.ajax({
    url: 'example.html',
    type: 'GET',
    success: function(data) {
 
        var dom = $(data);
 
        dom.filter('script').each(function(){
            $.globalEval(this.text || this.textContent || this.innerHTML || '');
        });
 
        $('#mydiv').html(dom.find('#something').html());
 
    }
});

Вот нашел такой кусок кода, внешне фактически то, что использую и я.
Не могу понять смысла строчки
$('#mydiv').html(dom.find('#something').html());

то есть мы загружаем в блок с id="myDiv" методом html кусок обработанного текста в переменной dom. А вот что дальше? зачем мы ищем в dom #something ?
И правильно ли я понимаю, что в строках
dom.filter('script').each(function(){
            $.globalEval(this.text || this.textContent || this.innerHTML || '');
        });

происходит преобразование текста в код, вернее куски текста, представляющие из себя код начинают восприниматься кодом, а не текстом?
Ответить с цитированием
  #18 (permalink)  
Старый 06.01.2016, 03:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от CHER84
Не могу понять смысла строчки
$('#mydiv').html(dom.find('#something').html());
То что прислал сервер (data), это просто строка, а после

var dom = $(data);

это уже объект (jq), а dom.find('#something').html() находит в этом объекте объект с id=something получая его html, ну и вставляет в mydiv.

Сообщение от CHER84
происходит преобразование текста в код
Да, а $.globalEval() отличается от javascript-метода eval() в глобальной области выполнения.
Ответить с цитированием
  #19 (permalink)  
Старый 06.01.2016, 03:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

CHER84,
$.ajax({
    url: 'example.html',
    type: 'GET',
    success: function(data) { //пришла строка

        var dom = $(data);  //превратили строку в html

        dom.filter('script').each(function(){ //нашли содержимое всех сриптов в этом html
            $.globalEval(this.text || this.textContent || this.innerHTML || '');//запустили все скрипты, которые нашли при помощи плагина
        });

        $('#mydiv').html(dom.find('#something').html()); // весь html нам не нужен, а нужен только элемент  something, его отыскали и вывели на экран

    }
});
Ответить с цитированием
  #20 (permalink)  
Старый 06.01.2016, 03:16
Интересующийся
Отправить личное сообщение для CHER84 Посмотреть профиль Найти все сообщения от CHER84
 
Регистрация: 06.01.2016
Сообщений: 11

Спасибо за пояснения, кажется я нащупал решение своей проблемы.
Выложу здесь код, там минимум изменений получится с первоначальным вариантом, так что должно быть полезным.
Суть сводится к слкдующему:
document.getElementById(result_id).innerHTML = response;
					myFunction();

запускаем именованную функцию, а уже внутрь этой функции засовываем то, что нам нужно, то есть в моем подгружаемом файлике образовалась еще такая конструкция:
function myFunction(){
	$(document).ready(function() {
	
	alert ("hi");
	
	
	/* Зaкрытие мoдaльнoгo oкнa, тут делaем тo же сaмoе нo в oбрaтнoм пoрядке */
	$('#modal_close, #overlay').click( function(){ // лoвим клик пo крестику или пoдлoжке
		$('#modal_form')
			.animate({opacity: 0, top: '45%'}, 200,  // плaвнo меняем прoзрaчнoсть нa 0 и oднoвременнo двигaем oкнo вверх
				function(){ // пoсле aнимaции
					$(this).css('display', 'none'); // делaем ему display: none;
					$('#overlay').fadeOut(400); // скрывaем пoдлoжку
				}
			);
	});
	
	
	});
}


и алерт и код закрывания окошка по нажатию на крестик заработали, а вот перезагрузка методом load пока сопротивляется, буду дожимать =)
По сути принципиальный вопрос: как заставить код JS быть именно кодом, а не текстом, разрешился, так что надеюсь поможет кому-то еще =)

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



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипты в java.js перестают работать. oneplus Элементы интерфейса 34 28.05.2015 19:22
Не работают скрипты после обновления данных Dealaxer Общие вопросы Javascript 4 18.03.2015 17:12
innerHTML....? Hapson Элементы интерфейса 4 24.07.2013 01:33
Не работают скрипты на jQuery в IE6/7 Александр345 jQuery 6 19.08.2011 13:27
ошибка с innerHTML Gekt0r Общие вопросы Javascript 15 21.08.2008 11:57