2014-05-18 39 views
3

我想调用一个PHP函数,当一个HTML按钮被点击。我做了一些搜索,发现它不可能直接做到这一点,我应该使用Ajax。 所以这是我迄今为止的尝试,这是不working.this是我的test.php和功能也在这个页面。php函数调用与AJAX

<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'; 
    } 
    ?> 

+1

你的函数将永远不会被调用,因为'$ x的值当你的时候总是'0'做比较。你的代码在语法上也不正确。它应该看起来像:'$('。NextPage')。click(function(){$ .ajax({'。 –

+0

感谢您的快速响应.i按照您所说的编辑了我的代码,但现在我得到错误“未定义的索引:x“在这一行:$ x = $ _POST ['x']; – user3622910

回答

2

得到Ajax调用的x的值。

$ x = $ _POST ['x'];

然后使用它。

编辑

首先你要检查的天气里变量被设置或不..

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

试试这个

+0

感谢您的快速response.i编辑我的代码,如你所说,但现在我得到”未定义索引:x“行:$ x = $ _POST ['x']; – user3622910

+0

检查编辑的答案.. –

-2

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

1

首先,您需要将您的按钮设置为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> 
+0

感谢您的回答,我编辑我的code.still不工作!当我点击按钮 – user3622910

+0

@ user3622910 ,我在ajax的url上使用了'index.php',尝试编辑它并匹配将处理该ajax的php的文件名称: – user1978142

+2

@ user3622910:请不要抱怨“无法正常工作”,请实际尝试调试问题。使用浏览器的控制台查看是否正在触发'POST'请求​​,以及是否收到回复。查看网页来源。继续尝试 - 这就是你如何解决问题:) –

1

我几乎已经使用你的代码,并得到它的工作。你的PHP就好了,至于你的AJAX调用,它必须有successdone才能使返回的数据受益。

参考的代码是在这里

HTML

<!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> 

的JavaScript

$(document).ready(function() { 
    $('.NextPage').click(function() { 
     $.ajax({ 
      type:'post', 
      url:'service.php', 
      data:{x:1} 
     }).done(function(data) { 
      $("#abc").text(data); 
     }); 
    }); 
}); 

PHP

<?php 
    $x = $_POST['x']; 

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

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

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

感谢您的answer.i编辑我的代码,并且点击按钮时仍然没有任何反应 – user3622910