Javascript jQuery插件不返回AJAX的JSON返回结果

Javascript jQuery插件不返回AJAX的JSON返回结果,javascript,jquery,ajax,jquery-plugins,autosuggest,Javascript,Jquery,Ajax,Jquery Plugins,Autosuggest,所以我使用这个jQuery插件: 它基于此插件: 下面是一个JSFIDLE,其中包含jSuggest的(工作)演示: 这是我用来在我的页面上实例化插件的代码: <form id="add" action="components/AddItem.php" method="post" enctype="multipart/form-data" class="center clear"> <fieldset> <l

所以我使用这个jQuery插件:
它基于此插件:

下面是一个JSFIDLE,其中包含jSuggest的(工作)演示:

这是我用来在我的页面上实例化插件的代码:

<form id="add" action="components/AddItem.php" method="post" enctype="multipart/form-data" class="center clear">
            <fieldset>
                <legend>Basic Information</legend>
                <label for="name">Name</label>
                <br />
                <input type="text" name="name" id="name"/>
                ...[snip]...
        </form>
这是在文本框中键入“ch”时从
“components/suggItem.php”
返回的字符串:

[{“value”:“1”,“name”:“Cheeseburger”},{“value”:“3”,“name”:“Fish Sandwich”}]

(这是
内容类型:application/json
,我是从FireBug获得的)

但是,我在下拉列表中得到的唯一一件事是
“找不到结果”
。有人能在我的代码中找到bug吗

我也尝试过:

$( '#name' ).jSuggest({
                        source: "components/suggItem.php",
                        seekVal: "name",
                        });
以及
“值”
“名称”
的各种组合

我不明白为什么这不起作用。有什么帮助吗

  $( '#name' ).jSuggest({source: "components/suggItem.php",                              
selectedItemProp: "name", 
seekVal: "name"  
 });
所有这三个属性都是它工作所必需的。通过直接向源属性传递数组(而不是url)来验证它是否有效,一旦传递完毕,请尝试url


所有这三个属性都是它工作所必需的。验证它是否可以通过直接将源属性传递给数组而不是url来工作,一旦传递给源属性,请尝试url。

该插件可能有其优点,但作者似乎对AJAX的工作方式存在严重误解。此代码如下:

        // If the data is a URL, retrieve the results from it. Else, the data is an object, retrieve the results directly from the source.
        if (dType === 'string'){

          // Set up the limit of the query.
          var limit = qLimit ? "&limit="+encodeURIComponent(qLimit) : '';

          // Build the query and retrieve the response in JSON format.
          $.getJSON(theData+"?"+opts.queryParam+"="+encodeURIComponent(string)+limit+opts.extraParams, function(rData){ theData = rData; });

        }

        // Call the custom retrieveComplete function.
        theData = opts.retrieveComplete.call(this, theData);
在我看来,似乎假设“getJSON”调用将同步调用函数参数,这样变量“theData”将在执行最后一行(如图所示)代码之前更新。然而,这不是真的,“数据”是驱动整个自动完成机制的关键对象


原始代码(对于“autoSuggest”插件,它似乎是“JSSuggest”的前身)与该代码的外观截然不同,它正确地将ajax调用返回的JSON数据的解释延迟到处理程序例程。

该插件可能有其优势,但是作者似乎对AJAX的工作方式有着严重的误解。此代码如下:

        // If the data is a URL, retrieve the results from it. Else, the data is an object, retrieve the results directly from the source.
        if (dType === 'string'){

          // Set up the limit of the query.
          var limit = qLimit ? "&limit="+encodeURIComponent(qLimit) : '';

          // Build the query and retrieve the response in JSON format.
          $.getJSON(theData+"?"+opts.queryParam+"="+encodeURIComponent(string)+limit+opts.extraParams, function(rData){ theData = rData; });

        }

        // Call the custom retrieveComplete function.
        theData = opts.retrieveComplete.call(this, theData);
在我看来,似乎假设“getJSON”调用将同步调用函数参数,这样变量“theData”将在执行最后一行(如图所示)代码之前更新。然而,这不是真的,“数据”是驱动整个自动完成机制的关键对象


原始代码(对于“autoSuggest”插件,它似乎是“JSSuggest”的前身)与该代码的外观截然不同,它正确地将ajax调用返回的JSON数据的解释延迟到处理程序例程。

是什么让您选择了该特定插件?我不知道它的ajax处理代码如何能正常工作。@Pointy我喜欢Drew Wilson的插件,这个插件修复了他插件中的许多错误。我愿意接受更好的建议。。。你指的是哪一部分?它使用jQuery的getJSON,所以我认为它非常可靠。它误用了getJSON——您发布的代码似乎假设getJSON的结果将立即可用,这是错误的。您发布的代码看起来也与插件主页上的代码有很大不同,后者是“官方”JSugest插件。我正在使用的插件是基于Drew Wilson的autoSuggest插件,并且只命名为jSuggest,因为我想,作者不知道其他插件。这是我得到链接的地方。更新:@Pointy看来你在JSON问题上是对的。你能详细解释一下这个问题吗?@Pointy,如果你把你的答案(“JSON被破坏了”)作为一个答案,我会给你的。我已经切换到jquery.ui自动建议。不太好看,但我完全理解。是什么让你选择了那个插件?我不知道它的ajax处理代码如何能正常工作。@Pointy我喜欢Drew Wilson的插件,这个插件修复了他插件中的许多错误。我愿意接受更好的建议。。。你指的是哪一部分?它使用jQuery的getJSON,所以我认为它非常可靠。它误用了getJSON——您发布的代码似乎假设getJSON的结果将立即可用,这是错误的。您发布的代码看起来也与插件主页上的代码有很大不同,后者是“官方”JSugest插件。我正在使用的插件是基于Drew Wilson的autoSuggest插件,并且只命名为jSuggest,因为我想,作者不知道其他插件。这是我得到链接的地方。更新:@Pointy看来你在JSON问题上是对的。你能详细解释一下这个问题吗?@Pointy,如果你把你的答案(“JSON被破坏了”)作为一个答案,我会给你的。我已经切换到jquery.ui自动建议。不太好看,但我完全理解。因此,插件中的JSON处理程序似乎不起作用,因为我总是包含这三个属性,而您的建议是先尝试数组,结果成功了。你知道为什么JSON不起作用吗?看来插件中的JSON处理程序不起作用了,因为我一直都包含了这三个属性,而你的建议是先尝试数组,结果成功了。关于JSON为什么不起作用有什么想法吗?经过一点测试,尝试从JSON url获取结果对这个插件不起作用,而使用硬编码的数据集似乎没问题。由于JSON url与“progenitor”插件完美配合,我认为这确实是一个问题。经过一点测试,试图从JSON url获得结果与此插件不起作用,而使用硬编码数据集似乎很好。由于JSON url与“progenitor”插件完美配合,我认为这确实是个问题。