2016-08-10 3 views
0

Я работаю с Wordpress, а Javascript вставляет текст в редактор на редактирующую запись.Вызов функции PHP и возвращаемого значения в Javascript

У меня есть два файла: один - js, а другой - файл PHP. Я хочу вызвать функцию PHP, чтобы вернуть значение базы данных в Javascript.

Что я делаю:

У меня есть [значение - X] баллов. // Javascript вставляет это в редактор. [Значение - х] значение, которое выходит из функции 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?

Thx много.

+0

вывод его, как в 'echo ..' – YemSalat

+0

Не понимаю. 'echo' не работает на' post'. – Capslock10

+0

Что такое javascript-код в отдельном файле js? – user5200704

ответ

0

, например

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

магазин значения PHP в яваскрипт переменных 1, а затем использовать его в JavaScript. Просто убедитесь, что эта переменная объявлена ​​и присвоено значение перед скриптом, который ее использует.

1

Первое что сначала. Если вы работаете на wordpress, вы должны вызвать Аякса в WordPress пути

См: 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; 
} 
1

Вы можете поместите массив 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 
     } 
}); 
+0

Чисто и просто! Спасибо. – Rikco

Смежные вопросы