在AJAX函数中使用Foreach

时间:2014-05-23 作者:marcelo2605

这是我第一次尝试创建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在变量中生成?

1 个回复
最合适的回答,由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> 选择框的。

结束

相关推荐

包括定制AJAX注册表单的必要功能

我知道登记表上有一些问题,但我认为我的问题有点不同,因为我还没有通过搜索找到答案。我正在制作一个简单的订阅小部件,它接收用户的电子邮件并将其作为订阅者添加到WordPress用户表中。它从一个简单的表单开始,只需输入电子邮件并提交即可。表单的操作是在我的插件文件夹中创建一个php文件,ajax-signup.php. 我使用ajax将表单数据发布到此文件,然后该文件“注册”电子邮件地址并返回ajax响应。旧的插件只包括registration.php 该文件为ajax php文件提供了所有必需的功能,以便