使用ajax用SQL填充下拉列表

时间:2016-03-06 22:15:13

标签: javascript php jquery ajax wordpress

所以我对ajax比较陌生,但我知道发生了什么。我有一个注册表单,使用数据库中的ajax更新“country,city and area”字段。

php看起来像这样

<select disabled name="City" id="City<?php $template->the_instance(); ?>"   >
        <?php
            global $wpdb;

            $results = $wpdb -> get_results("SELECT Distinct City FROM Location WHERE Country = '".$selected_country."'");

            foreach ($results as $row)
            {
                echo "<option value=\"$row->City\">" . $row->City. "</option>";
            }
            echo "</select>";
        ?>

,java脚本看起来像这样

$("#Country").change (function(){
     var selected_country = $('#Country option:selected').val();
       if (selected_country !=''){
         $('#City').prop('disabled', false);
        }
        else {
          $('#City').prop('disabled', 'disabled');
        }
        $.ajax({
            url: ajax_object.ajaxurl,
            type : 'post',
            data : {
                action : 'fetch_city',
                selected_country: selected_country
            }
            })
     })

如果我更改了将请求发送到myform.php的“url”,则下拉的结果不会使用实际的数据库结果进行更新。我的猜测是我错过了一步。

P.S我还没有使用“行动”,因为我不确定它是否会有所帮助。我确实将它添加到functions.php文件并动态挂钩。

希望它有意义

2 个答案:

答案 0 :(得分:0)

您的$ .ajax呼叫缺少成功功能,例如

success: function(data) {
        $('#City').html(data);
    }

但是要获得所需的结果,您必须从数据库查询中返回适当的json_encoded结果。

答案 1 :(得分:0)

代码的某些部分缺失或损坏? $ selected_country来自哪里?你可能没有任何带有id&#39; City&#39;或者,因为您要将$ template-&gt; the_instance()中的任何内容附加到其中。

您也永远不会处理Ajax请求中的响应。