Как запустить метод, запустив возврат второй страницы?

#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
}