MySQL查询数组没有';当使用ajax调用时,不会被填充


MySQL query array doesn't get populated when called with ajax

我使用ajax在WordPress网站上返回sql查询的结果。基本上,有两个查询,我将显示第二个查询的结果。第一个查询获取包含某个自定义字段的帖子列表。第二个查询查找这些帖子,并列出具有与之关联的另一个自定义字段的帖子。现在,如果我不使用ajax,只将其添加到我的页面模板中,一切都会正常工作。

<?php
    $post_ids = $wpdb->get_col( "SELECT DISTINCT post_id FROM $wpdb->postmeta WHERE meta_key = 'Make' AND meta_value='Chevrolet'" );
    // now get the food names
    $stocktypes = $wpdb->get_col( "SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = 'Model' AND post_id IN (". implode(',', array_map('absint', $post_ids) ) .")" );

    if ($stocktypes) {
        foreach ($stocktypes as $stocktype) {
            echo "<option value='"" . $stocktype . "'">" . $stocktype . "</option>";
        }
    }
?>

当我把它添加到一个单独的文件中并用ajax调用它时,问题就来了。以下是我的ajax文件的内容:

<?php
    $models = $_GET['Make'];
    $post_ids = $wpdb->get_col( "SELECT DISTINCT post_id FROM $wpdb->postmeta WHERE meta_key = 'Make' AND meta_value= %s", $models );
    $stocktypes = $wpdb->get_col( "SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = 'Model' AND post_id IN (". implode(',', array_map('absint', $post_ids) ) .")" );

    if ($stocktypes) {
        foreach ($stocktypes as $stocktype) {
            echo "<option value='"" . $stocktype . "'">" . $stocktype . "</option>";
        }
    }
?>

这是我的ajax调用:

 <script>
    $(document).ready(function(){
        $("#make").change(function() {
            $.ajax({ 
                url: "<?php bloginfo('template_url'); ?>/getModel.php", 
                data: { Make: $(this).val() },
                dataType: "html",
                type: "GET", 
                success: function(data){ 
                    $("#model").html(data); 
                } 
            }); 
        });
    });
</script>

ajax调用运行良好,因为我可以回显$models=$_GET['Make']的结果;

通过使用print_r(array_values($post_ids));,我发现第一个查询的$post_ids数组没有填充在我的ajax文件中。我唯一能想到的是wp-load.php(允许使用WordPress函数)没有被加载,但这不是问题所在。

问题出现在第一个查询中。当我使用meta_value= %s时,我应该使用meta_value= $models

此外,正如Kevin B所指出的,我在ajax调用中添加了type: "GET"