为什么我的jQuery脚本不会在Wordpress中触发?

时间:2009-05-13 22:17:31

标签: jquery wordpress autocomplete

我在未使用任何CMS的演示页面上测试了以下脚本。 该脚本位于index.php文件中,运行正常。

<form method="get" action="">
  <input id="label_search" type="text" value="" maxlength="40" name="inputText"/>
</form>

<script type="text/javascript">
  var options = {
      script:"includes/autosuggest.php?json=true&",
      varname:"input",
      minchars: 2,
      delay: 200,
      json:true,
      shownoresults:false,
      maxresults:15,
      timeout: 5000
  };

  var as_json = new bsn.AutoSuggest('inputText', options);
</script>

现在我想在Wordpress模板文件中使用相同的代码。 但什么都没发生。好像脚本根本没有触发。

我正在使用用户友好的网址,并将自定义永久链接设置为/%category%/%postname%。 也许这有话要说?

我知道bsn.AutoSuggest_2.1.3.js正在运行,因为在页面加载时会对文件执行“alert('hello')”测试。

可能出现什么问题?

这是我的WP代码:

sl_startpage.php:

<?php
/*
Template Name: SL - Start page
*/ 
  get_header(); ?>
  <div id="myArea">
  <?php
    include_once('includes/storeLocator/sl_header.php');
  ?>
  </div>

<?php 
  get_footer(); 
?>

这是sl_header.php中的(简单的)代码:

  <div id="sl-header">
    <form method="get" action="">
      <input id="label_search" type="text" value="" maxlength="40" name="product_search"/>
    </form>                   
  </div>


  <script type="text/javascript">
    var options = {
        script:"includes/autosuggest.php?json=true&",
        varname:"input",
        minchars: 2,
        delay: 200,
        json:true,
        shownoresults:false,
        maxresults:15,
        timeout: 5000
    };
    var as_json = new bsn.AutoSuggest('product_search', options);
  </script>

有人建议吗?

这是我使用的插件: http://www.brandspankingnew.net/archive/2007/02/ajax_auto_suggest_v2.html

2 个答案:

答案 0 :(得分:1)

includes/autosuggest.php?json=true&

这是网址,对吗?我认为它最终将与您的模板生成的文件相关,因此如果autosuggest.php的url位于:

http://yourserver.com/includes/autosuggest.php

..并且您使用该模板为以下两个(虚构的)网址生成html:

http://yourserver.com/frontpage/
http://yourserver.com/categories/anotherpage/

我很确定它会在这里寻找你的包含:

http://yourserver.com/frontpage/includes/autosuggest.php
http://yourserver.com/categories/anotherpage/includes/autosuggest.php

..当你可能想要它看时:

http://yourserver.com/includes/autosuggest.php

..所以尝试在JSON的前面添加一个'/',看看是否能纠正它。

答案 1 :(得分:0)

好的! 经过大约20个小时的研究,我在blog by Ryan Pharis找到了答案。 正如我怀疑的那样,这是一个简单的解决方案。

Wordpress使用“用户友好的URLS”。 因此我的道路最终如下: http://www.mysite.com/includes/autosuggest.php?json=true&

REAL路径是这样的: http://www.mysite.com/wp-content/themes/my_theme/includes/autosuggest.php?json=true&

我的脚本不能位于外部.js脚本中,因为我需要从Wordpress获取URL。所以我这样做了:

<?php $site_url = bloginfo('template_url'); ?>

 <script type="text/javascript">
    var options = {
        script:"<?php echo $site_url; ?>includes/autosuggest.php?json=true&",

现在我的剧本有效了,我是一个快乐的露营者。