2014-10-18 77 views
0

我试图做一个自动完成的窗体和必须根据在前面的字段中输入的数据完成的字段,从数据库中的数据和所有的东西在Wordpress ...Wordpress中的恢复变量Ajax

对于自动完成,没有问题,它与WordPress的工作,我只是增加了一个有点像代码:

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

    }); 

和页面listePersonne这样的:

<?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的声明是必要的面前:

add_action('wp_ajax_do_ajax', 'notre_fonction_ajax'); 

我还是不设法通过我的变量(值PERSONNAME)为了让我reqête到下一个领域。

所以我有一个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_fonction_ajax(){

// CE开关lancera莱fonctions聚赛龙拉valeur曲”光环不可变'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; 

} 

// Maintenant nous allons transformer n otrerésultat恩JSON和l'afficher

$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 
} 
} 

在这个文件中,我设置了“马来西亚航空”,但它实际上是我应该收回变量。

当我看着萤火虫,我看到了答案:“马航”]在控制台上,但我不能让这个值在我的下一个查询中使用

不管怎样,我刚刚完成我的课程我在培训和我有一点麻烦,使他们一起工作的所有语言,CMS等...

现在我的大脑就像果冻......如果有人有一些灯,我会永远感激!

Kaelig。

+0

Sola,perduta,abbandonata ... – user3723830 2014-10-20 21:16:19

+0

如果您有建议,我会在本周末回复它... – user3723830 2014-10-24 13:51:06

+0

我认为我在逻辑的某个地方犯了一个错误,我想我会重新开始一切从零开始。 我有两个列表(Personne&organization),如果数据存在于BDD中,则由自动填充填充,此部分正在工作。 然后,我想找回选择的两个字段,以请求显示BDD中的相应数据(如果存在)。 我想通过填补第二个领域,根据第一个领域抓住的东西来改善。 如何让你进入最简单和最有效的? 祝您有美好的一天! – user3723830 2014-10-28 09:44:41

回答

0
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; 
} 

所以一切都没有工作,因为我得到的萤火两个输入值“获得管理-ajax.php行动......?”在响应显示值的选项卡,如“NAME PERSON”和组织。

现在,随着价值观我想为一个请求: 对于nomPersone价值,演绎出所有组织在BDD 价值nomOrgani和PERSONNAME发现:使与这两个名称的应用程序中显示的内容发布这个名字。 我认为,成功派对功能(数据)发送到一个PHP文件,以使我的请求...遵循!

0
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。 我尝试了我的succes功能,它的工作原理!

但现在我必须在我的SQL请求中使用这些cookie来显示我的信息。 不确定如何混合JavaScript和SQL,建议欢迎... 祝您有美好的一天。 Kaelig。

0

没有完全解决...但几乎;实际上,我的饼干有一段时间滞后,第二次迟到,可以这么说......我有第一个请求的'nom'和第二个'org'的第二个。另一方面,如果我填充两个字段以相同的方式良好的信息显示良好,所以一旦记录好的cookie,SQL查询和显示就会工作。此外,它只能在Firefo上工作。在Chrome和IE中,第二个自动完成列表中没有显示,并且在Chrome开发工具中,我找到了cookie'org',但没有找到'nom'cookie。 我不是很远,我坚持不懈! 祝您有愉快的一天。 Kaelig。

0

事实上,我在另一个Ajax调用中嵌套了一个Ajax调用。 当我创建第二个cookie时,我调用(Ajax)创建div(查询和显示)。 这有点复杂,但基本上它工作,并不显示我想要的所有视图,但我认为这是查询本身的问题。 在任何情况下,“Ajax引擎”的作品! 谢谢。 祝您有愉快的一天。 Kaelig。