Javascript json/ajax的新功能。。控制台错误为未捕获类型错误:无法读取属性';长度';未定义的

Javascript json/ajax的新功能。。控制台错误为未捕获类型错误:无法读取属性';长度';未定义的,javascript,html,ajax,json,Javascript,Html,Ajax,Json,我的代码有问题。请注意,我在这方面是全新的,所以请原谅我,如果解决方法很简单。在发布这篇文章之前,我确实试图找到一个解决方案,我发现很多文章都有类似的控制台错误,但是没有一篇与我的问题相关(或者我只是不太理解它) 我已经发布了一个JSFIDLE版本的我正在做的工作,然后是我在GitHub中发布的另一个版本,它抛出了一个错误。。除了指向外部文档之外,函数是相同的。然而,在我的Github完整版本上,我得到一个错误“UncaughtTypeError:无法读取未定义的属性'length'。阅读其他人

我的代码有问题。请注意,我在这方面是全新的,所以请原谅我,如果解决方法很简单。在发布这篇文章之前,我确实试图找到一个解决方案,我发现很多文章都有类似的控制台错误,但是没有一篇与我的问题相关(或者我只是不太理解它)

我已经发布了一个JSFIDLE版本的我正在做的工作,然后是我在GitHub中发布的另一个版本,它抛出了一个错误。。除了指向外部文档之外,函数是相同的。然而,在我的Github完整版本上,我得到一个错误“UncaughtTypeError:无法读取未定义的属性'length'。阅读其他人的问题,看起来对象没有正确转换,但如果是这样,我不知道为什么它在JSFIDLE中工作

下面是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
    });
});
$(文档).ready(函数(){
$(“#可排序1,#可排序2,#可排序3”)。可排序({
connectWith:“.connectedSortable”
}).disableSelection();
//一些代码
$(“#可排序3”).sortable();
//还有代码吗
$(“#添加内容”)。单击(函数(e){
e、 预防默认值();
var itemSelector=$(“#myList li”),
项目=[],
dataObj={};
$.each(项选择器、函数(i、v){
items.push($(v).val());
});
//我确信有一种比大量IF语句更好的发送已检查项的方法,不过这是可行的。。
if(document.getElementById('bacon')。选中){
items.push($(“#bacon”).val());
}        
if(document.getElementById('bananapeppers')。选中){
items.push($(“#bananapeppers”).val());
}          
if(document.getElementById('blackolives')。选中){
items.push($(“#黑橄榄”).val());
}        
if(document.getElementById('greenpeppers')。选中){
items.push($(“#青椒”).val());
}         
dataObj.stuff=项目;
$.ajax({
url:“/echo/json/”,
数据:{
json:json.stringify(dataObj)
},
成功:功能(数据){
$(“#可排序3”).empty();
$.each(data.stuff,function(k,v){
$(“#可排序3”)。追加(“
  • ”+v+”
  • ”); }) }, 键入:“POST”, 数据类型:“json”, 缓存:false }); });
    以下是指向JSFIDLE版本的链接:

    下面是一个Github存储库,其中包含无法正常工作的完整内容:

    如果有必要,我将通过WAMP服务器对其进行测试,并通过名为Light Table的程序进行调试

    最后一点,在我的Github版本中,我添加了一行
    window.alert(dataObj.stuff);只是为了确保这些值至少传递了那么远的距离,而且它们确实传递了。任何帮助都将不胜感激。

    $。每个
    都使用
    length
    属性,您的问题最有可能是从调用
    每个
    AJAX
    调用返回的数据。您可以复制您的p在JSFIDLE中,通过更改data.stuff的名称,您将得到以下错误:


    调试警报中出现错误。您正在检查
    dataObj
    是否正常,但
    dataObj
    是您在ajax调用中发送的对象,而不是返回的对象。将
    alert(dataObj.stuff)
    替换为
    alert(data.stuff)
    您可能会得到未定义。从那时起,修复您的代码应该很容易。

    您在代码中的什么地方尝试访问长度?我尝试访问长度的唯一位置是检查选中了多少单选按钮的函数。例如“var cnt=$(“输入[name='toppingtypes']:选中”).length但正如您所看到的,我在那里定义了一个var,而且,控制台在到达可排序页面(最后一个淡入窗口,即我在JSfiddle链接中显示的函数)之前不会抛出错误您不能在wordpress中为jQuery使用
    $
    运算符,因为它使用noconflict。将
    $
    替换为
    jQuery
    ,这是我发现的最简单的方法(还有其他方法)。您描述的错误应该附加到一行代码中,但是如果它在JSFIDLE中工作,并且假设您在wp中具有完全相同的html,则很可能是命名问题,如果不是,则您需要找到代码失败的地方,很可能是您建议的,访问对象的尝试失败了,这意味着html元素失败了不存在。谢谢,但是,我没有使用wordpress。我没有任何类型的底层CMS。我只是通过WAMP服务器在本地主机上运行。尽管如此,我将开始使用不同的运算符。这完全奏效了!非常感谢Julien!在我通过了这部分之后,我才知道我的jquery 2.0不支持我的排序出于某种原因,我加载了1.6.4(与正在工作的JSFIDLE上的版本相同),然后它就工作了!