这是我第一次尝试创建ajax函数。
我的脚本采用下拉列表中的选定值
$(\'#state\').change(function () {
var state = $(\'#state option:selected\').val();
$.ajax({
type: \'POST\',
url: \'http://localhost/website/wp-admin/admin-ajax.php\',
dataType: \'json\',
data: {
\'action\' : \'myFunction\',
\'state\' : state
},
success: function( data ){
console.log(data);
},
error: function (data) {
console.log(\'error\' + data);
}
});
});
该值由PHP函数接收,该函数使用该值来选择所选州的城市
function myFunction(){
$term_id = $_POST[\'state\'];
$taxonomy_name = \'state\';
$cities = get_term_children( $term_id, $taxonomy_name );
foreach ( $cities as $city ) {
$term = get_term_by( \'id\', $city, $taxonomy_name );
$list = \'<option value="\'.$term->term_id.\'">\'.$term->name.\'</option>\';
}
echo $list;
die();
}
add_action(\'wp_ajax_myFunction\', \'myFunction\');
add_action(\'wp_ajax_nopriv_myFunction\', \'myFunction\');
但是如何发送所有值由foreach在变量中生成?
最合适的回答,由SO网友:Nick Young 整理而成
好吧,实际上看起来有几种方法可以做到这一点。第一个是通过改变$list
并将其作为JSON返回。
很容易改变$list
通过如下方式添加到数组:
$list[] = \'<option value="\'.$term->term_id.\'">\'.$term->name.\'</option>\';
然后将其作为JSON返回:
echo json_encode( $list );
如果需要对特定选项执行其他操作,这可能会在JavaScript代码中提供更大的灵活性。
另一种方法是保留现有代码。它看起来像是您当前的安装方式,您将获得所有添加的<option>
在一个巨大的字符串标签。这应该可以由jQuery处理。你只需要在回应中做点什么:
success: function( data ){
console.log(data);
$(\'#yourSelectBox").html(data);
}
这将增加
<option>
您从AJAX中获得的将作为HTML添加到
<select>
和
</select>
选择框的。