我只是想选择父盒然后根据父母要孩子,我的目的是创建父(国家)和子(城市)选择框,当有人选择国家然后它应该显示该国家的城市存储在DB中。用户选择国家时页面不应该重新加载,但是它应该点击数据库并获取该国家/地区的城市,我创建了一个Wordpress页面,并且从那里开始,我只是放置我的html的父和子选择框。
HTML页面/ Wordpress页面
<select name="PER_COUNTRY" id="PER_COUNTRY">
<?php $rows= $wpdb->get_results($wpdb->prepare("SELECT * FROM country ORDER BY countryname" ,13,'gargle'),ARRAY_A);
foreach($rows as $row){?>
<option value="<?php echo $row["countrycode"]?>"><?php echo $row["countryname"]?></option>
</select>
使用相同名称ajax-test创建插件文件夹,并在其中放置2个文件1是ajax-test.php和test.js
ajax-test.php的代码如下:
<?php
/**
* Plugin Name: Ajax Test
* Plugin URI: http://test.org
* Description: Allows users to select cities
* Version: 1.0.0
* Author: Javed
* Author URI: http://test.org
* License: GPL2
*/
add_action( 'wp_enqueue_scripts', 'my_enqueue' );
function my_enqueue() {
wp_enqueue_script( 'ajax-script', plugins_url( '/test.js', __FILE__ ), array('jquery'));
wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' )));
}
function my_action() {
$country_id = $_REQUEST['country_id'];
echo $country_id;
die();
}
add_action('wp_ajax_my_action', 'my_action' );
add_action('wp_ajax_nopriv_my_action', 'my_action');
?>
在上面的代码中我没有调用全局数据库,如果我可以在这里处理用户选择框的值并且可以发送回子选择框,那么我可以自己进行数据库和表查询。
和test.js文件代码是:
jQuery(document).ready(function(){
jQuery('#PER_COUNTRY').change(function(){
var country_id = jQuery(this).val();
// alert(country_id);
jQuery.ajax
({
type: 'post',
url: ajax_object.ajax_url,
data: {
action : 'my_action',
country_id : country_id,
},
success: function(data)
{
alert(data);
}
});
});
});
你可以看到// alert(country_id);在test.js中评论这是为了测试,是的,它正在获得价值,但我认为问题在于Ajax帖子,需要你在这方面的帮助,请指导我。我在这里做了什么错,我已经阅读了很多教程,但我在代码中没有发现任何错误。
答案 0 :(得分:0)
好吧,我现在正在回答我的问题,因为我自己解决了这个问题,我只想分享答案,这样如果有人也面临同样的问题可以解决它,我的所有代码都很完美,我想念的是只是来自函数文件的jQuery Enqueue,我确实包含了来自页眉/页脚的jquery,并且它适用于所有jQuery操作但是当涉及到Ajax时,我们必须从Function定义它,这里是一种在Function中定义jQuery的方法: p>
if (!is_admin()) add_action("wp_enqueue_scripts", "my_jquery_enqueue", 11);
function my_jquery_enqueue() {
wp_deregister_script('jquery');
wp_register_script('jquery', "http" . ($_SERVER['SERVER_PORT'] == 443 ? "s" : "") . "://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js", false, null);
wp_enqueue_script('jquery');
}
我还是要感谢WisdmLabs,他们至少试图解决我的问题。 :)