未捕获的TypeError:$(...)。cytoscape不是一个函数

时间:2017-05-04 08:01:33

标签: javascript jquery ajax asp.net-mvc cytoscape.js

我在互联网上找到了这个代码并且有效:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="~/Scripts/cytoscape.js"></script>

   <div id="cy"></div>
    <script>
       $(function(){ // on dom ready

$('#cy').cytoscape({
  style: cytoscape.stylesheet()
    .selector('node')
      .css({
        'content': 'data(deneme)'
      })

我将此代码更改为下面的代码(我基本上将代码块移到了ajax调用的成功部分中):

  $("form").submit(function (event) {
        event.preventDefault();
        $.ajax({
            type: 'POST',
            url: "/MyController/MyAction",
           data: { nameid: $('#nameid').val() },
            success: function (newdata) {

                $('#cy').cytoscape({
                    layout: {

它给出了这个错误:

> MainGraph:55 Uncaught TypeError: $(...).cytoscape is not a function
>     at Object.success (MyCode:55)
>     at i (jquery.min.js:2)
>     at Object.fireWith [as resolveWith] (jquery.min.js:2)
>     at A (jquery.min.js:4)
>     at XMLHttpRequest.<anonymous> (jquery.min.js:4)

我该如何使这项工作?我尝试将代码更改为:

var cy = cytoscape({
  container: $('#cy'),

上面的错误消失但其他部分失败了。我该如何解决这种情况?感谢。

1 个答案:

答案 0 :(得分:1)

没有$(el).cytoscape()功能。您执行let cytoscape = require('cytoscape'); let cy = cytoscape();let Cytoscape = require('cytoscape'); let cy = new Cytoscape();]

通常不需要将cy init置于回调中。只需指定elements作为承诺,Cytoscape处理其余承诺。