用ajax调用php函数

用ajax调用php函数,php,jquery,ajax,Php,Jquery,Ajax,我试图在点击HTML按钮时调用php函数。我做了一些搜索,发现直接调用php函数是不可能的,我应该使用ajax。 这是我到目前为止的尝试,但没有成功。这是我的test.php,函数也在本页中 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script> <script type="text/javasc

我试图在点击HTML按钮时调用php函数。我做了一些搜索,发现直接调用php函数是不可能的,我应该使用ajax。 这是我到目前为止的尝试,但没有成功。这是我的test.php,函数也在本页中

   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $('.NextPage').on('click', function() {
                $.ajax({
                    url: 'test.php',
                    data: {x: 1},
                    type: 'POST',
                    dataType: 'JSON',
                    success: function(response) {
                        alert(response);
                    }
                });

            });
        });
    </script>
     </head>
     <body>

    <button type="button" class="NextPage">go to nextpage</button> 

    <?php
    if (isset($_POST['x'])) {
        if ($_POST['x'] == 1) {
            $data = function1();
            echo json_encode($data);
            exit;
        }
    }

    function function1() {
        return 'Hi user! im function #1';
    }

    function function2() {
        return 'Hi user! im function #2';
    }
    ?>

$(文档).ready(函数(){
$('.NextPage')。在('click',function()上{
$.ajax({
url:'test.php',
数据:{x:1},
键入:“POST”,
数据类型:“JSON”,
成功:功能(响应){
警报(响应);
}
});
});
});
转到下一页

从ajax调用中获取x的值

$x=$_POST['x']

然后使用它

编辑

首先,您必须检查变量是否已设置

if(isset($_POST[x]))
{
$x = $_POST['x'];
}

试试这个

什么让你觉得直接调用php函数是不可能的。这正是CodeIgniter PHP MVC框架中所做的。您可以直接在CodeIgniter中使用php类中的参数调用php函数,这实际上一直都是这样做的。

首先,您需要将按钮设置为
type=“button”
,然后发出AJAX请求,然后代码中缺少的部分就是处理请求的后端部分。然后后端响应该调用。在那之后,你可以根据你的反应做你想做的事情。考虑这个例子:

<?php

// this part handles the AJAX request
if(isset($_POST['x'])) {
    if($_POST['x'] == 1) {
        $data = function1();
        // a call has made, then give a response
        echo json_encode($data);
        exit;
    }
}

function function1() {
    // do some processing
    return 'Hi user! im function #1';
}

function function2() {
    return 'Hi user! im function #2';
}

?>

<!-- make its type "button" -->
<button type="button" class="NextPage">go to nextpage</button>
<div id="notification"></div>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('.NextPage').click(function(){
        $.ajax({
            url: 'test.php',
            data: {x: 1},
            type: 'POST',
            dataType: 'JSON',
            success: function(response) {
                $('#notification').html('Your ajax call has been successful<br/> and this is a notification').css({background: 'yellow'});
            }
        });

    });
});
</script>

转到下一页
$(文档).ready(函数(){
$('.NextPage')。单击(函数(){
$.ajax({
url:'test.php',
数据:{x:1},
键入:“POST”,
数据类型:“JSON”,
成功:功能(响应){
$('#notification').html('您的ajax调用已成功
,这是一个通知').css({background:'yellow'}); } }); }); });
我已经实际使用了您的代码并使其正常工作。您的PHP很好,至于AJAX调用,它必须有
成功
完成
,才能使返回的数据受益

参考代码在这里

HTML

PHP


您的函数永远不会被调用,因为在进行比较时,
$x
的值总是
0
。您的代码在语法上也不正确。它应该是这样的:
$('.NextPage')。单击(function(){$.ajax({
)。感谢您的快速响应。我按照您所说的那样编辑了我的代码,但是现在我在这一行中得到了错误“Undefined index:x:$x=$\u POST['x'];感谢您的快速响应。我按照您所说的那样编辑了我的代码,但是现在我得到了错误“Undefined index:x”在这行:$x=$\u POST['x'];谢谢你的回答,我编辑了我的代码。仍然不工作!当我单击button@user3622910在前面的示例中,我在ajax上的url上使用了
index.php
,尝试编辑它并匹配将处理该ajax的php的文件名call@user3622910:而不是抱怨“不工作”,请实际尝试调试该问题。使用浏览器的控制台查看是否触发
POST
请求,以及是否收到任何响应。查看页面源代码。继续尝试-这就是解决问题的方法:)@kevinabelita我将url更改为test.php,这是函数的同一页。@user3622910好的,您现在可以检查编辑,我们现在使用的是同一个jquery cdn(并检查js脚本)。谢谢您的回答。我编辑了代码,但单击按钮时仍然没有发生任何事情
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="mobile-web-app-capable" content="yes">
        <link rel="shortcut icon" sizes="196x196" href="">

        <link rel="stylesheet" type="text/css" href="" />
    </head>
    <body>
        <div id="abc"></div>
        <button type="submit" class="NextPage">go to nextpage</button>
        <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <script type="text/javascript" src="app.js"></script>
    </body>
</html>
$(document).ready(function() {
    $('.NextPage').click(function() {
        $.ajax({
            type:'post',
            url:'service.php',
            data:{x:1}
        }).done(function(data) {
            $("#abc").text(data);
        });
    });
});
<?php
    $x = $_POST['x'];

    if ($x == 1) {
        function1();
    }

    function function1() {
        echo "This is function 1";
    }

    function function2() {
        echo "This is function 2";
    }