我从wordpress
开始,直到现在才遇到很多问题。
当用户更改database
aming的值以更新表单输入时,我想使用ajax
查看我的SELECT
。使用ajax
和php
轻松php
和jquery
,但我似乎无法理解wordpress背后的概念。
将要发布的所有php都直接放在我的插件中我的表单的文件中。出于测试的目的,我目前只是试图从导航器控制台中的js
获取一些东西。
php(wordpress):
add_action( "wp_enqueue_fetch_guide", "fetch_guide" );
function fetch_guide(){
wp_enqueue_script( 'guide', plugins_url( '/js/jquery.guide.js', __FILE__ ));
wp_localize_script('guide', 'fetchGuide', admin_url( 'admin-ajax.php' ) );
}
add_action("wp_ajax_nopriv_fetch_guide_return","fetch_guide_return");
add_action("wp_ajax_fetch_guide_return","fetch_guide_return");
function fetch_guide_return(){
global $wpdb;
if(isset($_POST["id"])){
$id = $_POST["id"];
$table = $wpdb->prefix."guide";
$guide = $wpdb->get_row("SELECT * FROM ".$table." WHERE id_guide LIKE ".$id.";");
print json_encode($guide);
}
}
js:
$(function(){
jQuery("#chooseGuide").on("change", function(){
jQuery.ajax({
url : fetchGuide.ajax_url,
type : "post",
data : {"id":guide.value},
dataType: "json"
}).success(function(data){
if(data != 0){
console.log(data);
}
});
});
});
答案 0 :(得分:0)
Wordpress更改.htaccess以将所有请求拉到自身。如果您正在运行ajax,您将需要放入重定向插件或从wordpress域外攻击php程序。
答案 1 :(得分:0)
您的JS文件是否已加载?在我看来,在你的wp_localize_script中,ajax_url并不完整。您是否正确指定了要从admin-ajax.php调用的操作?
fetchGuide.ajax_url
的值应该类似于admin-ajax.php?action=fetch_guide_return
。这是对的吗?
控制台里有什么东西吗?对不起,我还不能发表评论,没有足够的观点:p
答案 2 :(得分:0)
这里的问题是你没有正确地将ajax_url指向你的js。
更新这些行
wp_localize_script('guide', 'fetchGuide', admin_url( 'admin-ajax.php' ) );
到
wp_localize_script('guide', 'fetchGuide', array('ajax_url' => admin_url( 'admin-ajax.php' ) ));
这些将正确指出ajax_url,你的功能应该运作良好
答案 3 :(得分:0)
谢谢大家的回答。我很难理解它在wordpress中是如何工作的。
如果找到答案但必须改变我做事的大部分内容。
这就是我最后的JS:
<div class="row">
<div class="col-xs-5 col-xs-offset-5></div>
<div class="col-xs-2></div>
</div>
和php:
add_action( 'admin_footer', 'my_fetch_guide' );
function my_fetch_guide() { ?>
<script type="text/javascript" >
var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
jQuery("#chooseGuide").on("change", function(){
jQuery.ajax({
type:"POST",
url: ajaxurl,
data: {
action: "fetch_guide_return",
id: jQuery(this).val()
},
dataType: "json"
}).success(function(data){
jQuery("#wpgc_guide_form").prepend("<input type='hidden' name='idnumber' id='idnumber' value='"+data["id_guide"]+"'/>");
jQuery("#name").val(data["name"]);
jQuery("#firstName").val(data["first_name"]);
jQuery("#mail").val(data["mail"]);
jQuery("#phone").val(data["phone_number"]);
}).error(function(errorThrown){
alert(errorThrown);
} );
})
</script>
<?php }