Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Запустить скрипт, при успешном выполнение ajax (https://javascript.ru/forum/misc/60648-zapustit-skript-pri-uspeshnom-vypolnenie-ajax.html)

djonA 12.01.2016 19:22

Запустить скрипт, при успешном выполнение ajax
 
Подскажите, необходимо запустить скрипт на странице при успешном выполнении ajax запроса.

Скрипт которые отбирает какие то данные и возвращает их в html
<input id="test" type="text" value="test">
<input type="button" onclick="go();">
<div id="syda"></div>


function go()
{
var test= $("#test").val();
       $.ajax({
                type: "POST",
                url: "url.php",
                data: {data: data},
                       success: function(html) {
                        $("#syda").empty();
                        $("#syda").append(html);
			 } });}


<?php
$test= $_POST [data];
echo $test;
?>



При успешном возвращении данных в html мне надо запустить простейший скрипт:
<script>
alert('123');
</script>


Сложность в том что необходимо запустить скрипт только при успешном получении данных через ajax. Вот это сделать не получается

laimas 12.01.2016 19:32

success: function(html) {
    $("#syda").html(html);
    alert(123)
}

djonA 12.01.2016 19:35

А возможно передать в этот скрипт какие то переменные из php части?

laimas 12.01.2016 19:37

В смысле для поместить в документ данные и еще данные для функции? Можно, но в данном случае нужно json формат использовать.

djonA 13.01.2016 10:13

А можно пример как передать какие то данные в скрипт и его запустить через json

Заранее спасибо

laimas 13.01.2016 11:52

Да просто, если все известно заранее, например некая функция, которая будет выводить сообщения, пусть условно назовем ее showMessage, и определив для нее имя ключа, под которым сервер будет отдавать для нее сообщения, пусть это message, а данные помещаемые на страницу это ключ data. Тогда на сервере отправка данных это:

echo json_encode(['data'=>некие данные, 'message'=>'Сообщение']);


Методу ajax указать тип ожидаемых от сервера данных json:

.......
dataType: 'json', //можно и не задавать тип, JQ определит автоматически, но сервер должен передать заголовок соответствующего типа MIME 
success: function(d) {
    $("#syda").html(d.data);
    showMessage(d.message)
}


Естественно можно запускать функцию и по условию, к примеру, если сообщение от сервера, это не постоянные данные в каждом его ответе.

djonA 13.01.2016 17:24

Подскажите а на сколько критично если я передают на странице php скажем вот такой скрипт:
<script type="text/javascript">
	function go() {
	    alert("123");
	}
	</script>


а потом на странице js буду его инициировать:
success: function(html) {
	    $("#syda").html(html);
	    go();
	}



Все вроде работает. Вопрос на сколько это корректно?

laimas 13.01.2016 17:42

Цитата:

Сообщение от djonA
Вопрос на сколько это корректно?

Ну почему не корректно, собственно все скрипты не подключаемые, а в теле страницы, так и выводятся сервером. Тут вопрос не в этом, а чего вы хотите - вы спрашивали как передать в функцию клиенту данные как ее аргумент. А обмен с сервером при этом асинхронный, каким же образом эти данные могут попасть как аргумент в функцию go?
В таком подходе нет гибкости.


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