#javascript #php #css #ajax
#javascript #php #css #ajax
Вопрос:
Page1.php
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js" type="text/javascript"></script>
<input type="hidden" value="valuetest" id="idinput">
<div onclick="myfunction()" style="height: 30px;width: 30px;background: gray;">
<div id="receive"></div>
</div>
<script type="text/javascript">
function myfunction() {
$.ajax({
type: "POST",
url: "page2.php",
data: {
sendpost: $('#idinput').val()
},
success: function(data) {
$('#receive').html(data);
}
});
function myfunction2(){
}
}
</script>
</body>
</html>
Page2.php
<?php
$var = $_POST['sendpost']; //This line is not in use
echo "return";
?>
Этот код работает идеально! Page1
отправляет значение valuetest
в page2
без необходимости обновления страницы. echo
Of page2
возвращает значение return
для page1
вставки этого в div="receive"
. Пока все хорошо. Я хочу, чтобы вместо того, чтобы div="receive"
получать значение, оно запускало функцию myfunction2
или любой другой метод, который позволяет мне стилизовать page1
(css).
Короче говоря: возврат page2
должен использоваться только для вызова метода page1
.
Ответ №1:
Вы можете просто передать свою функцию как успешный обратный вызов.
<script type="text/javascript">
function myfunction() {
$.ajax({
type: "POST",
url: "page2.php",
data: {
sendpost: $('#idinput').val()
},
success: myfunction2
});
function myfunction2(){
}
}
</script>
И если вы хотите вернуть строку, которая запускает функцию, вы можете вернуть имя функции и передать его eval()
функции, которая вычисляет строку.
// In your php
<?php
$var = $_POST['sendpost']; //This line is not in use
echo "myfunction2()";
// In your js
success: function(data) {
eval(data); // Call the function returned by your PHP
}