Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Возврат двух типов данных для одного запроса (https://javascript.ru/forum/jquery/38091-vozvrat-dvukh-tipov-dannykh-dlya-odnogo-zaprosa.html)

hitenok 18.05.2013 22:39

Возврат двух типов данных для одного запроса
 
Добрый день, подскажите, пожалуйста.
Есть аякс запрос который должен вернуть html код и javascript.
Сейчас возвращаю html, а в нем пишу <script>...</script>.
Писать каждый раз в html <script>...</script> не очень удобно, а типы данных для возврата могут быть либо html либо script, есть способ вернуть отдельно html, а отдельно script в рамках одного запроса?

Deff 18.05.2013 22:42

hitenok,
Приведите минимальный код текущего возврата

hitenok 18.05.2013 22:59

$("#test").live("click", function(){
$.ajax({
type: "POST",
url: "/scripts/ajax/test.ajax.php",
data: "",
dataType: "html",
success: function(html){
$("#test").html(html);
}
});
return false;
});

Возвращает:
<p>Действие совершено.</p>
<script type="text/javascript">
$(document).ready(function(){
$("#id").slideUp(200);
});
});
</script>

Deff 18.05.2013 23:02

hitenok,
И Вам нужно раздельно получить контенты ?

Или что-то другое ?
В принципе - если есть признаки различия контента
Т.е к примеру
в HTML лишь одна строка, далее идет скрипт... ну и тд...
Можно к примеру поставить длинный разделитель
<p>
Действие совершено.
==***********1234567890*************==
 $(document).ready(function(){
 $("#id").slideUp(200);
 });
 return false;
 });
</p>

И распарсить регуляркой

hitenok 18.05.2013 23:04

Мне желательно получить тот же результат без передачи <script>.
А только передать
<p>Действие совершено.</p>
и
$("#id").slideUp(200);

hitenok 18.05.2013 23:06

Другими словами я пытаюсь понять можно ли объединить в одном запросе типы данных html и script.
Т.е. вопрос скорее оптимизации процесса, чем его создания.

Deff 18.05.2013 23:14

Цитата:

Сообщение от hitenok
Другими словами я пытаюсь понять можно ли объединить в одном запросе типы данных html и script.

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

Ксать контенты легко и сейчас разделяются
$("#test").live("click", function(){
 $.ajax({
 type: "POST",
 url: "/scripts/ajax/test.ajax.php",
 data: "",
 dataType: "html",
 success: function(html){

var scriptCnt = $(html).find('script')[0].text;
$(html).find('script').remove();
alert(scriptCnt +'\n'+$(html).html())

 }
 });
 return false;
 });

hitenok 18.05.2013 23:16

Я видимо не правильно все-таки изложил суть вопроса...
Если возвращать данные типом html, то ответ будет строка html кода которая может содержать и javascript код.
Можно так же вернуть тип script, то ответ будет воспринят заранее как javascript код и выполниться и html код там будет ошибочным.
А можно ли объединить два способа в один запрос?

Deff 18.05.2013 23:21

hitenok,
Я не понимаю задачи - ибо как то летели два кракодила - один зеленый - другой на сервер

А зачем ?
Не устраивает тег скрипт ? - запрашивайте просто текстовый файл

hitenok 18.05.2013 23:24

Цитата:

Сообщение от Deff (Сообщение 251388)
hitenok,
Не устраивает тег скрипт ?

Не то чтобы не устраивает, пытаюсь узнать оптимально ли поступаю, вот и все.

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


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