调用PHP函数并返回值给Javascript


Call PHP function and return value to Javascript

我正在使用Wordpress, Javascript将在编辑帖子上向编辑器插入文本。

我有两个文件,一个是js,另一个是PHP文件。我想调用PHP函数将数据库值返回给Javascript

我在做什么:

我有[value - X]点。//Javascript将把它插入到编辑器中。[value - x]是PHP函数

返回的值

这是我的JavaScript:

   onsubmit: function( e ) 
{
var str = '';                                                                    
if(e.data.friend_cb ) 
{                                                                            
    str += 'I have [value - X] points. <br><br/>';
}
editor.insertContent(str);

jQuery.ajax({
    url: 'http://localhost:8080/wordpress/wp-content/plugins/databaseConnection.php',
    type: 'POST',
    data: {functionname: 'getX', condition_code: condition_code},
        error:function(data)
        {
            alert("failed");
            console.log(data);
        },
        success: function(data) 
        {
            alert("success");                                                                                
            console.log(data); // Inspect this in your console
        }
});

下面是PHP函数:

if( !isset($_POST['condition_code']) ) 
 {
      $error .= 'No function no_friend!';          
      $condition_code = $_POST['condition_code'];
 }
    $functionName  = $_POST['functionname'];
          // $functionName = 'add_bonus_point';
    switch($functionName) {
        case 'set_no_friend':  

             //Check did it pass the functionName
            if( !isset($_POST['functionname']))
                  $error .= 'No function name!'; 
            else
                 $errorBool = false;
            break;
        case 'try_insert':
            getX();
            break;
        }

 function getX()
 {
     $x = 0;
     //Connect to database, get X value.
     return $x;
 }

如何得到值X?

非常感谢。

重要的事先说。如果你在wordpress上工作,你应该在wordpress中调用ajax

参见:https://codex.wordpress.org/AJAX_in_Plugins

javascript应该是

onsubmit: function( e ) {
    var str = '';                                                                    
    if(e.data.friend_cb ) {                                                                            
        str += 'I have [value - X] points. <br><br/>';
    }
    editor.insertContent(str);
    jQuery.ajax({
        url: ajaxurl,
        type: 'POST',
        data: {
            action:'my_ajax_function',
            functionname: 'getX', 
            condition_code: condition_code
        },
        error:function(data){
            alert("failed");
            console.log(data);
        },
        success: function(data) {
            alert("success");                                                                                
            console.log(data); // Inspect this in your console
        }
    });
}
你的PHP代码应该是
add_action( 'wp_ajax_my_ajax_function', 'my_ajax_function' );
add_action( 'wp_ajax_nopriv_my_ajax_function', 'my_ajax_function' );
function my_ajax_function(){
    if( !isset($_POST['condition_code']) ) {
          $error .= 'No function no_friend!';          
          $condition_code = $_POST['condition_code'];
    }
    $functionName  = $_POST['functionname'];
          // $functionName = 'add_bonus_point';
    switch($functionName) {
        case 'set_no_friend':  

             //Check did it pass the functionName
            if( !isset($_POST['functionname']))
                  $error .= 'No function name!'; 
            else
                 $errorBool = false;
            break;
        case 'try_insert':
            getX();
            break;
    }
}
function getX(){
     // access global variable $wpdb database connection object
     global $wpdb; 
     $x = 0;
     //Connect to database, get X value.
     return $x;
}

您可以使用json数组获取数据。请在下面写代码。

function getX()
 {
     $x = 0;
     //Connect to database, get X value.
     $data = array(
            "x"     => 0
          );
      echo json_encode($data);
 }

和Javascript代码如下:

jQuery.ajax({
    url: 'http://localhost:8080/wordpress/wp-content/plugins/databaseConnection.php',
    type: 'POST',
    data: {functionname: 'getX', condition_code: condition_code},
        error:function(data)
        {
            alert("failed");
            console.log(data);
        },
        success: function(data) 
        {
            var obj = jQuery.parseJSON(data);
            alert( obj.x );
            console.log(obj); // Inspect this in your console
        }
});

例如

<script type="text/javascript">
  var phpVariable = "<?php
  $x = getX();
  echo $x;
  ?>";
</script>

首先将PHP值存储到javascript变量中,然后在javascript中使用它。只要确保在使用它的脚本之前声明该变量并为其赋值即可。