草庐IT

关于 php:Select2 ajax 不显示结果

codeneng 2023-03-28 原文

Select2 ajax not showing results

我正在使用 select2 和 ajax 在我的数据库中查询特定分类下的术语,但是当我搜索搜索框时,它只会挂在"搜索"上而没有检索到任何结果。

这是我的html

1
<select multiple="" name="regions1[]" id="regions1" class="job-manager-multiselect select2-hidden-accessible" required="" tabindex="-1" aria-hidden="true"></select>

我的 jquery:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
jQuery(function($) {
$(document).ready(function() {
$("#regions1" ).select2({        
ajax: {
    url:"/ajax/connect.php",
    dataType: 'json',
    delay: 250,
    data: function (params) {
        return {
            q: params.term // search term
        };
    },
    processResults: function (data) {
        // parse the results into the format expected by Select2.
        // since we are using custom formatting functions we do not need to
        // alter the remote JSON data
        return {
            results: data
        };
    },
    cache: true
},
minimumInputLength: 2
  });
  });
   });

和我的 php 代码来查询数据库,我正在寻找分类法"job_listing_region"下的所有术语名称

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php

  $servername ="localhost";
  $username ="myusername";
  $password ="mypassword";

   try {
$conn = new PDO("mysql:host=$servername;dbname=mydatabase", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   }
    catch(PDOException $e)
   {
   echo"Connection failed:" . $e->getMessage();
   }



  // strip tags may not be the best method for your project to apply extra
   layer of security but fits needs for this tutorial
   $search = strip_tags(trim($_GET['q']));

 // Do Prepared Query
   $query = $conn->prepare("
   SELECT * FROM (
    SELECT wp_terms.name
   FROM wp_terms
   JOIN wp_term_taxonomy
    ON wp_term_taxonomy.term_id = wp_terms.term_id
    WHERE taxonomy = 'job_listing_region'
    AND count = 0
    ) as T"

     );

    // Add a wildcard search to the search variable
     $query->execute(array(':search'=>"%".$search."%"));


   // Do a quick fetchall on the results
    $list = $query->fetchall(PDO::FETCH_ASSOC);

   // Make sure we have a result
   if(count($list) > 0){
    foreach ($list as $key => $value) {
    $data[] = array('id' => $value['name'], 'text' => $value['name']);              
   }
    } else {
   $data[] = array('id' => '0', 'text' => 'No Products Found');
   }


// return the result in json
echo json_encode($data);

如您所见,我正在检索我的数据,但搜索只是挂起。

提前致谢。

  • 尝试将此: processResults 更改为: success
  • 你在使用索引吗?
  • 在 phpmyadmin 上手动运行您的查询是运行速度快还是 nt
  • @DerekPollard 我试过了,没用。
  • @devpro,是的,当我通过 phpmyadmin 运行查询时,查询正在运行
  • 解释您的查询并检查获取了多少行
  • 使用子查询的原因是什么?
  • 您需要遍历数据,然后使用 javascript 将其附加到您想要的元素。
  • 我正在尝试检索分类法 "job_listing_region" 下 wp_terms 中的所有术语名称。提取了大约 29,000 行。
  • @DerekPollard 你介意解释一下怎么做吗?我是这方面的业余爱好者。
  • 我在下面解释。看我的回答。
  • 那么 count 列是否被索引了呢?


在此处找到解决方案 How to load JSON data to use it with select2 plugin

需要像这样重新创建我的结果

1
2
3
4
5
6
7
processResults: function (data) {
return {
    results: $.map(data, function(obj) {
        return { id: obj.id, text: obj.text };
    })
};
}

所以你需要将 processResults 更改为 success 并将以下内容放入该函数中:

1
2
3
4
5
6
for(i=0;1<data.length;++i){
   var currentObject = data[i];
   var id = currentObject.id;
   var text = currentObject.text;
   //do what you need to here (Put things in a div, etc)
}

然后,您可以执行以下操作:

1
document.getElementById("search").innerHTML = document.getElementById("search").innerHTML+"<br />"+id+text;

  • 谢谢!只是为了澄清,"搜索"应该替换为选择正确的id?
  • 是的,我是这么说的。或者您可以在 select 中添加一个 div 并将内容放在那里。
  • 当我这样做时,我得到一个"TypeError: document.getElementById(...) is null" ,这是我修改后的 jquery 脚本以及您的建议 codepaste.net/j5xjck 。再次感谢你的帮助!
  • document.getElementById("#regions").innerHTML = document.getElementById("#regions").innerHTML+"<br >"+id+text; 需要去哪里: do what you need to here (Put things in a div, etc) 并确保你有一个名为"regions"的 div,试试这个并告诉我你得到了什么
  • 好的 没有更多错误,我在我的选择中创建了一个名为区域的 div,但结果仍然没有显示。尽管结果已返回,但它仅显示"正在搜索"。
  • 你能为我设置一个 ID 警报,看看它是否回显
  • 我创建了一个警报,毫不奇怪,它没有回显。如果我尝试在名为"regions1"的选择中创建一个名为区域的 div,它不会显示,并且在外部创建 div 也无济于事。再次感谢您帮助新手
  • 对不起,我不能帮助你更多!如果您按照我上面的方式进行操作,它应该可以工作。

有关关于 php:Select2 ajax 不显示结果的更多相关文章

  1. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  4. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

  5. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  6. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  7. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  8. ruby-on-rails - 复数 for fields_for has_many 关联未显示在 View 中 - 2

    目前,Itembelongs_toCompany和has_manyItemVariants。我正在尝试使用嵌套的fields_for通过Item表单添加ItemVariant字段,但是使用:item_variants不显示该表单。只有当我使用单数时才会显示。我检查了我的关联,它们似乎是正确的,这可能与嵌套在公司下的项目有关,还是我遗漏了其他东西?提前致谢。注意:下面的代码片段中省略了不相关的代码。编辑:不知道这是否相关,但我正在使用CanCan进行身份验证。routes.rbresources:companiesdoresources:itemsenditem.rbclassItemi

  9. ruby-on-rails - 在 Flash 警报 Rails 3 中显示错误消息 - 2

    如果我在模型中设置验证消息validates:name,:presence=>{:message=>'Thenamecantbeblank.'}我如何让该消息显示在闪光警报中,这是我迄今为止尝试过的方法defcreate@message=Message.new(params[:message])if@message.valid?ContactMailer.send_mail(@message).deliverredirect_to(root_path,:notice=>"Thanksforyourmessage,Iwillbeintouchsoon")elseflash[:error]

  10. ruby-on-rails - 事件记录 : Select max of limit - 2

    我正在尝试将以下SQL查询转换为ActiveRecord,它正在融化我的大脑。deletefromtablewhereid有什么想法吗?我想做的是限制表中的行数。所以,我想删除少于最近10个条目的所有内容。编辑:通过结合以下几个答案找到了解决方案。Temperature.where('id这给我留下了最新的10个条目。 最佳答案 从您的SQL来看,您似乎想要从表中删除前10条记录。我相信到目前为止的大多数答案都会如此。这里有两个额外的选择:基于MurifoX的版本:Table.where(:id=>Table.order(:id).

随机推荐