【发布时间】:2015-08-07 10:12:38
【问题描述】:
我的代码有问题。请注意,我对此完全陌生,所以如果解决方案很简单,请原谅我。在发布之前我确实尝试过找到解决方案,并且我发现很多帖子都有类似的控制台错误,但是没有一个与我的问题有关(或者我只是不太了解它)。
我已经发布了我正在做的工作的 JSFiddle 版本,然后是我在 GitHub 中的另一个抛出错误的版本。除了它指向外部文档的位置之外,功能是相同的。然而,在我的 Github 完整版中,我收到一个错误“未捕获的类型错误:无法读取未定义的属性‘长度’”。阅读其他人的问题,似乎对象没有正确转换,但如果是这种情况,我不知道为什么它在 JSFiddle 中有效。
这里是 js 代码的片段。
$(document).ready(function() {
$( "#sortable1, #sortable2, #sortable3" ).sortable({
connectWith: ".connectedSortable"
}).disableSelection();
//Some code
$("#sortable3").sortable();
//Some more code
$("#addStuff").click(function(e) {
e.preventDefault();
var itemSelector = $("#myList li"),
items = [],
dataObj = {};
$.each(itemSelector, function(i, v) {
items.push($(v).val());
});
//I Am Sure There Is A Better Way Of Sending Checked Items Than A Ton Of IF Statements, However This Works..
if(document.getElementById('bacon').checked) {
items.push($("#bacon").val());
}
if(document.getElementById('bananapeppers').checked) {
items.push($("#bananapeppers").val());
}
if(document.getElementById('blackolives').checked) {
items.push($("#blackolives").val());
}
if(document.getElementById('greenpeppers').checked) {
items.push($("#greenpeppers").val());
}
dataObj.stuff = items;
$.ajax({
url: '/echo/json/',
data: {
json: JSON.stringify(dataObj)
},
success: function(data) {
$("#sortable3").empty();
$.each(data.stuff, function(k, v) {
$("#sortable3").append("<li>" + v + "</li>");
})
},
type: 'POST',
datatype: 'json',
cache: false
});
});
这是有效的 JSFiddle 版本的链接: http://jsfiddle.net/1ukyLgnh/5/
这是一个无法正常工作的完整内容的 Github 存储库: https://github.com/dhierholzer/Basiconlineorderingone
如果重要的话,我会通过 WAMP 服务器对其进行测试,并通过一个名为 Light Table 的程序进行调试
最后一点,在我的 Github 版本上,我添加了一行 window.alert(dataObj.stuff);只是为了确保这些值至少传递了那么远,而且它们确实如此。任何帮助将不胜感激。
【问题讨论】:
-
您尝试在代码中的哪个位置访问长度?
-
我尝试访问长度的唯一地方是我正在检查检查了多少单选按钮的功能。例如 "var cnt = $("input[name='toppingtypes']:checked").length;"但正如您所看到的,我在那里定义了一个 var,并且控制台在到达可排序页面之前不会抛出错误(最后一个淡入窗口,这是我在 JSfiddle 链接中显示的函数)
-
您不能在 wordpress 中为 jQuery 使用
$运算符,因为它使用无冲突。将$替换为jQuery,这是我找到的最简单的方法(还有其他方法)。您描述的错误应该附加到一行代码,但如果它在 jsfiddle 中工作并假设您在 wp 中有完全相同的 html,则很可能是命名问题,如果不是,您需要找到代码的位置失败,很可能正如您所建议的那样,访问对象的尝试失败了,这意味着 html 元素不存在。 -
谢谢,不过,我没有使用 wordpress。我没有任何类型的基础 CMS。我只是通过 WAMP 服务器在 localhost 上运行。尽管如此,我还是会开始使用不同的运算符。
标签: javascript html ajax json