Wordpress中的恢复变量Ajax


Recovery variable Ajax in Wordpress

我正在尝试制作一个具有自动补全功能的表单,以及必须根据上一个字段中输入的数据、数据库中的数据和Wordpress中的所有内容填写的字段。。。

对于自动完成,没问题,它可以与Wordpress一起使用,我只是添加了一些代码,比如:

$("#nomPersonne").autocomplete
  ({
     source: 'wp-content/themes/hero-child/listePersone.php'
  });

一个页面列表像这样的人:

<?php
include_once 'connexion.php';
$term = $_GET['term']; 
$requete = $link->prepare("SELECT `wp_terms`.`name` FROM `wp_term_taxonomy` 
JOIN `wp_terms` ON `wp_terms`.`term_id`=`wp_term_taxonomy`.`term_id`
WHERE `wp_term_taxonomy`.`taxonomy`='nomPersonne' AND `wp_terms`.`name` LIKE :term");
$requete->execute(array('term' => '%' . $term . '%'));
$array = array(); // on créé le tableau
while ($donnee = $requete->fetch()) { // boucle pour obtenir les données
array_push($array, $donnee['name']); // et on ajoute celles-ci à notre tableau
}
echo json_encode($array); // il n'y a plus qu'à convertir en JSON
?>

因此,人员列表出现,当选择一个人时(如果发现合适),以下组织列表将仅列出上述列表中所选人员的组织。

在发现有必要使用Wordpress语句之前,我率先使用了Ajax:

add_action('wp_ajax_do_ajax', 'notre_fonction_ajax');

我仍然无法将我的变量(值PersonName)传递给下一个字段。

所以我有一个JS文件:

jQuery(document).ready(function(){
 jQuery('#nomPersonne').mouseleave(function(){
      doAjaxRequest();
 });
});
function doAjaxRequest(){
 jQuery.ajax({
      url: 'wp-admin/admin-ajax.php',
      data:{
           'action':'do_ajax',
           'fn':'get_id_value'
           },
      dataType: 'JSON',
      success:function(data){
                jQuery("#nomOrgani").html(data);
                         },
      error: function(errorThrown){
           alert('error');
           console.log(errorThrown);
      }
 });
}

我在function.php中的函数:

函数notre_founction_ajax(){

//ce开关的作用取决于的"fn"值

 switch($_REQUEST['fn']){
      case 'get_id_value':
           $output = ajax_get_id_value($_REQUEST['count']);
      break;
      default:
          $output = 'No function specified, check your jQuery.ajax() call';
      break;
 }

//所有变压器的维护都不是JSON和的顾问

 $output=json_encode($output);
 if(is_array($output)){
    print_r($output);
 }
 else{
    echo $output;
 }
 die;
}
function ajax_get_id_value(){
function ajax_get_id_value(){
include_once 'connexion.php';
$term = $_GET['term']; 
$requete = $link->prepare("SELECT `wp_postmeta`.`meta_value`  FROM `wp_postmeta` 
JOIN `wp_term_relationships` ON `wp_postmeta`.`post_id` =  'wp_term_relationships`.`object_id` 
JOIN `wp_term_taxonomy` ON `wp_term_relationships`.`term_taxonomy_id` =  `wp_term_taxonomy`.`term_taxonomy_id`
JOIN `wp_terms` ON `wp_terms`.`term_id` = `wp_term_taxonomy`.`term_id`
WHERE `wp_terms`.`name` = 'Malaysia Airlines' AND  `wp_postmeta`.`meta_key`='organization' AND `wp_postmeta`.`meta_value` LIKE :term ");
$requete->execute(array('term' => '%' . $term . '%'));
$array = array(); // on créé le tableau
while ($donnee = $requete->fetch()) { // on effectue une boucle pour obtenir les données
array_push($array, $donnee['meta_value']); // et on ajoute celles-ci à notre tableau
}
echo json_encode($array); // il n'y a plus qu'à convertir en JSON
}
}

在这个文件中,我设置了"马来西亚航空公司",但它实际上是我应该恢复的变量。

当我查看Firebug时,我在控制台上看到了答案:["Malaysia Airlines"],但我无法在下一个查询中使用该值

不管怎样,我刚刚完成了我的课程,我正在接受培训,我有点麻烦,让他们一起工作,所有的语言,CMS,等等。。。

现在我的大脑就像果冻。。。如果有人有灯光,我将永远感激!

凯利格。

jQuery(document).ready(function(){
 jQuery('#nomPersonne').change(function(){
      doAjaxRequest1();
 });
});
function doAjaxRequest1(){
  jQuery.ajax({
      url: 'wp-admin/admin-ajax.php',
      data:{
           'action':'do_ajax',
           'fn':'get_pers_value', 
           'value': document.getElementById("nomPersonne").value
           },
      dataType: 'JSON',
      success:function(data){
                //alert('çà marche !');
                         },
      error: function(errorThrown){
           alert('error');
           console.log(errorThrown);
      }
 });
 }

FOR nomOrgani:文件JS

jQuery(document).ready(function(){
jQuery('#nomOrgani').change(function(){
      doAjaxRequest2();
 });
});
 function doAjaxRequest2(){
  jQuery.ajax({
      url: 'wp-admin/admin-ajax.php',
      data:{
           'action':'do_ajax',
           'fn':'get_org_value', 
           'value': document.getElementById("nomOrgani").value
           },
      dataType: 'JSON',
      success:function(data){
          //alert('çà marche !');      
          show('signalIntox');
                         },
      error: function(errorThrown){
           alert('error');
           console.log(errorThrown);
      }
 });
}
add_action('wp_ajax_nopriv_do_ajax', 'notre_fonction_ajax');
add_action('wp_ajax_do_ajax', 'notre_fonction_ajax');
function notre_fonction_ajax(){
    // ce switch lancera les fonctions selon la valeur qu'aura notre variable 'fn'
     switch($_REQUEST['fn']){
      case 'get_pers_value':
           $output = ajax_get_pers_value('value');
      break;
      case 'get_org_value':
           $output = ajax_get_org_value('value');
      break;
      default:
          $output = 'No function specified, check your jQuery.ajax() call';
      break;
 }
 // Maintenant nous allons transformer notre résultat en JSON et l'afficher
 $output=json_encode($output);
 if(is_array($output)){
    print_r($output);
 }
 else{
    echo $output;
 }
 die;
}
function ajax_get_pers_value($nomPersonne){
$nom = $_REQUEST['value'];
return $nom;
}  
function ajax_get_org_value($nomOrgani){
$org = $_REQUEST['value'];
return $org;
}

因此,当我在显示值的响应选项卡中获得firebug"get admin-ajax.php?Action…"中两个输入的值时,一切都正常,例如"NAME PERSON"和as for the organization。

现在,有了这些值​​我想请求:对于nomPersone值,推导出BDD中要查找的所有组织nomOrgani和PersonName的值:使应用程序同时具有这两个名称,以显示具有此名称的帖子的内容。我认为,成功方函数(数据)发送到一个php文件来发出我的请求。。。跟随!

function doAjaxRequest1(){
     jQuery.ajax({
          url: 'wp-admin/admin-ajax.php',
          data:{
               'action':'do_ajax',
               'fn':'get_pers_value', 
               'value': document.getElementById("nomPersonne").value
               },
          dataType: 'JSON',
          success:function(data){
                    //alert('çà marche !');
                    createCookie('nom',document.getElementById("nomPersonne").value,0);
                    console.log(readCookie('nom'));
                    alert(readCookie('nom')); 
                    },
          error: function(errorThrown){
               alert('error');
               console.log(errorThrown);
          }
     });
 }

现在,我在Javascript中创建了一些函数来设置和获取cookie。我试过我的success函数,它很管用!

但现在我不得不在SQL请求中使用这些cookie来显示我的信息。不知道如何混合javascript和SQL,欢迎建议。。。祝你今天愉快。凯利格。

尚未完全解决。。。但几乎;事实上,我的饼干有一个时间滞后,可以说第二个迟到了。。。第一个请求的名字是"nom",第二个请求的是"org"。另一方面,如果我以相同的方式填写两次字段,那么好的信息就会很好地显示出来,所以一旦记录了两个好的cookie,SQL查询和显示就可以工作了。此外,它只适用于Firefo。在Chrome和IE中,第二个自动完成列表上没有显示,在Chrome开发工具中,我找到了cookie"org",但没有找到cookie"nom"。我不远,我坚持不懈!祝你今天愉快。凯利格。

事实上,我已经在另一个Ajax调用中嵌套了一个Ajax呼叫。当我创建第二个cookie时,我调用(Ajax)来创建div(查询和显示)。它有点复杂,但基本上可以工作,没有显示我想要的所有视图,但我认为这是查询本身的问题。无论如何,"Ajax引擎"都能工作!非常感谢。祝你今天愉快。凯利格。