2016-08-10 3 views
0

私はWordpressで作業しており、Javascriptは編集ポストのエディタにテキストを挿入します。PHP関数を呼び出してJavaScriptの値を返します

私は2つのファイルを持っています.1つはjsで、もう1つはPHPです。 PHP関数を呼び出すと、データベースの値がJavascriptに返されます。私がやっている何

は: - ポイント

私は、[X値]を持っています。 // Javascriptはこれをエディタに挿入します。 - [値は、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?

Thxたくさん。

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

例えば

+0

「echo ..」のように出力してください。 – YemSalat

+0

私はなぜそうしませんか。 'echo'は' post'では動作しません。 – Capslock10

+0

別のjsファイルのjavascriptコードは何ですか? – user5200704

答えて

0

はあなたのJavaScriptでそれを使用し、その後、javascriptの変数第一にPHPの値を格納します。この変数が宣言され、それを使用するスクリプトの前に値が割り当てられていることを確認してください。

1

最初のものが最初です。 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

することができますする必要がありますする必要があります:あなたはwordpress上で作業している場合は、

参照は、wordpressの方法でAJAXを呼び出す必要がありますデータを取得するために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

関連する問題