了解ajax返回

时间:2015-08-11 13:56:53

标签: php jquery ajax

我对理解ajax使用有一些问题。 让我们说我有这样的文件(这只是一个伪代码,请不要看看现在的基本错误)我读了这么多文章,但我发现它们很难理解

///////////////// file 1 /////////////////
        <?php
        x = 1;
        <button onclick=somefunction(x)></button>
        ?>

        <script>
        //here goes some ajax code sending this x variable to another php file
        </script>

让我们说它看起来像这样

////////////// file 2 ////////////////
    <?php
    /get x variable + sendint it back
    return x=2
    ?>

现在我要做的是让这个x值回到第一个脚本并使x = 2。我该怎么做?

2 个答案:

答案 0 :(得分:1)

这是一个使用JQuery和一些注释来尝试描述会发生什么的示例。

<html>
<!--file: ajax_basic.php-->
<head>
    <title>Ajax Basic Example</title>
</head>
<body>
  <input type="text" id="example_input" value="1">
  <button id="example_button">Example</button>        
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
  <script type="text/javascript">
        $(document).ready(function(){

            // .click(function() executes an anonymous function when the button is clicked
            $('#example_button').click(function() {

                // get the current value from the input
                test_value = $('#example_input').val();

                // $.get is the AJAX method.
                // It sends the object {'sent_value': test_value} to test.php
                // function(response) is the the function that will be executed when
                // a response is returned from the test.php
                $.get('test.php', {'sent_value': test_value}, function(response) {
                    // here, x is taken from the response of the php script.
                    // You can do whatever you like with this value.
                    x = response.returned_value;

                    // for this example, it updates the value of the text input
                    $('#example_input').val(x);
                }, 'json');
            });
        });
    </script>
</body>
</html>

这是将处理请求的PHP文件。它为此示例所做的只是递增它接收的值并返回新值。

<?php
// file: test.php
$response = array('returned_value' => $_GET['sent_value'] + 1);
echo json_encode($response);

答案 1 :(得分:1)

如果您使用的是jQuery,则应该从onclick=somefunction(x)切换到jQuery绑定,即。 .on() / .click() /等。见https://stackoverflow.com/a/826697/689579

使用jQuery你可以做类似的事情 -

<?php $x=1;>

<button id="mybutton">MyButton</button>

<script>
var x = <?php echo $x; ?>; // set initial x value to php value
$(function(){
    $('#mybutton').click(somefunction);
});
function somefunction(){
    $.ajax({
        url: 'phppage.php',
        data: {number:x}, // send current x value
        ...
        success: function(result){
            x = result; // when php file returns 2 (or other value increase x
        }
    });
}
</script>