Запустить скрипт, при успешном выполнение 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. Вот это сделать не получается |
success: function(html) { $("#syda").html(html); alert(123) } |
А возможно передать в этот скрипт какие то переменные из php части?
|
В смысле для поместить в документ данные и еще данные для функции? Можно, но в данном случае нужно json формат использовать.
|
А можно пример как передать какие то данные в скрипт и его запустить через json
Заранее спасибо |
Да просто, если все известно заранее, например некая функция, которая будет выводить сообщения, пусть условно назовем ее showMessage, и определив для нее имя ключа, под которым сервер будет отдавать для нее сообщения, пусть это message, а данные помещаемые на страницу это ключ data. Тогда на сервере отправка данных это:
echo json_encode(['data'=>некие данные, 'message'=>'Сообщение']); Методу ajax указать тип ожидаемых от сервера данных json: ....... dataType: 'json', //можно и не задавать тип, JQ определит автоматически, но сервер должен передать заголовок соответствующего типа MIME success: function(d) { $("#syda").html(d.data); showMessage(d.message) } Естественно можно запускать функцию и по условию, к примеру, если сообщение от сервера, это не постоянные данные в каждом его ответе. |
Подскажите а на сколько критично если я передают на странице php скажем вот такой скрипт:
<script type="text/javascript"> function go() { alert("123"); } </script> а потом на странице js буду его инициировать: success: function(html) { $("#syda").html(html); go(); } Все вроде работает. Вопрос на сколько это корректно? |
Цитата:
В таком подходе нет гибкости. |
Часовой пояс GMT +3, время: 16:04. |