Запустить скрипт, при успешном выполнение 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, время: 22:12. |