2013-07-18 39 views
0

我想实现这个代码here事先键入的内容Twitter的引导不正常mvc4

,但我没有得到任何结果,同时运行的项目。

这里是我的代码:

查看:

<input type="text" name="names" value="" id="typeahead" data-provide="typeahead"    autocomplete="off" /> 

再次对视图(index.cshtml):

<script type="text/javascript"> 
    $(function() { 
     $('#typeahead').typeahead({ 
      source: function (term, process) { 
       var url = '@Url.Content("~/index/GetNames")'; 

       return $.getJSON(url, { term: term }, function (data) { 
        return process(data); 
       }); 
      } 
     }); 
    }) 
</script> 

控制器(indexController.cs):

[HttpGet] 
public JsonResult GetNames(string term) 
{ 
    // A list of names to mimic results from a database 
    List<string> nameList = new List<string> 
    { 
     "Jonathan", "Lisa", "Jordan", "Tyler", "Susan", "Brandon", "Clayton", "Elizabeth", "Jennifer", "Hadi" 
    }; 

    var results = nameList.Where(n => 
     n.StartsWith(term, StringComparison.OrdinalIgnoreCase)); 

    return new JsonResult() 
    { 
     Data = results.ToArray(), 
     JsonRequestBehavior = JsonRequestBehavior.AllowGet 
    }; 
} 

这里也是js scrip点加在视图页的末尾:

<script src="~/Scripts/bootstrap.js"></script> 
<script src="~/Scripts/jquery-1.9.1.js"></script> 
<script src="~/Scripts/jquery-1.9.1.intellisense.js"></script> 
<script src="~/Scripts/jquery-1.9.1.min.js"></script> 

这里也是错误的名单,我得到运行时:

  • Uncaught TypeError: undefined is not a function bootstrap.js:29
  • Uncaught ReferenceError: intellisense is not defined jquery-1.9.1.intellisense.js:1
  • Uncaught TypeError: Object [object Object] has no method 'typeahead'

请让我知道我做错了什么!

+1

我们花时间为您回答这个问题的好事,所以您可以在没有接受的答案的情况下让我们挂起。 -_- – Mutmatt

回答

0

首先,请确保在引导之前先放置引用jquery的脚本标记。也只加载一个jQuery脚本标签。

像这样:

<script src="~/Scripts/jquery-1.9.1.min.js"></script> 
<script src="~/Scripts/bootstrap.js"></script> 
+0

对! JS错误解决了,但现在出现了一个新问题:未捕获错误:需要本地,预取或远程之一 – Tondar

0

您正在使用的那一刻所有的JS库有一个扶养:jQuery所以他们需要在正确的顺序加载:

<!-- jQuery should always be the first --> 
<!-- jquery-1.9.1.js and jquery-1.9.1.min.js are the same but .min version is minified and always lighter, so use it for faster page load --> 
<script src="~/Scripts/jquery-1.9.1.min.js"></script> 

<!-- Any other library should be loaded after jQuery --> 
<script src="~/Scripts/bootstrap.js"></script> 
<script src="~/Scripts/jquery-1.9.1.intellisense.js"></script> 

希望这有助于; )

+0

感谢您的回复!好吧,我已经做了这些更改和上述错误的问题解决了,但我仍然得到这个:未捕获的错误:在jquery-1.9.1.min.js中需要本地,预取或远程之一我认为它与某些事情有关提前打印的数据。 GetNames方法永远不会接到电话! – Tondar

+0

你是否包括图书馆http://twitter.github.io/typeahead.js/?如果是这样,你应该删除对它的引用,因为Bootstrap已经包含另一个typeahead函数,其中2个有点不同。 –

+0

Hieu,不,我不包括任何引用twitter.github.io/typeahead.js的库。同样的错误:未捕获错误:需要本地,预取或远程之一。我知道这意味着我必须通过至少一个数据源(预取或远程)或数据集(本地),但即时通讯在GetNames函数中并通过jscript调用它! – Tondar

2

这可能有点旧但不能使用source:您必须使用remote:,prefetch:local:作为错误读取。

您使用的是哪个版本的引导程序?独立插件不再像以前那样支持所有不同的数据提供者

相关问题