【问题标题】:Uncaught TypeError: Cannot use 'in' operator to search for '16' in未捕获的类型错误:无法使用“in”运算符搜索“16”
【发布时间】:2014-07-25 01:12:01
【问题描述】:

我在发布动作响应中有这个 json 对象:

{"status":"ok","filename":"538f057493d55.png"}
{"status":"ok","filename":"538f057493d11.png"}

我需要获取文件名值并将其添加到一些隐藏的输入中,所以我这样做:

$.post(url, {image: src}).done(function(data){
    var status = data.status;
    if (status === "ok"){
        var filename = data.filename;
        $.each(filename, function(key, value){
            var photosInput = $('#images');
            photosInput.val(value);
        });
    } else {
       // error
    }
});

发布效果很好,但获取的文件名值显示一些错误,即:Uncaught TypeError: Cannot use 'in' operator to search for '16' in 538f057493d55.png。谢谢帮忙。

【问题讨论】:

  • 您正在遍历文件名的字母。目标是什么?
  • 什么?能具体点吗?
  • 您使用的是哪个 jQuery 版本?该异常究竟是在哪里触发的?
  • 您现在显示的 JSON 无效。你只是收到一堆连接的 JSON 字符串吗?
  • 我对不同的上传文件有不同的响应,所以我有文件和一个响应,这是我的 json

标签: javascript jquery ajax post


【解决方案1】:

现在,$.each(filename,... 正在遍历文件名的字母。

但您似乎不需要任何迭代。看来你只是想要

$.post(url, {image: src}).done(function(data){
    var status = data.status;
    if (status === "ok"){
        $('#images').val(data.filename);
    } else {
       // error
    }
});

如果data 是一个数组,并且您想将所有文件名附加到输入,您可以这样做

$('#images').val(data.map(function(f){ return f.filename }).join(' '));

【讨论】:

  • 不,我有不止一个来自这篇帖子的回复,而且我有很多 JSON 对象
  • @Lukas 请描述您尝试实现的目标。因为你的代码没有暗示想要的结果。
  • @Lukas:那你为什么只展示一个?你的问题听起来好像data = {"status":"ok","filename":"538f057493d55.png"}。如果不是这样,请编辑它。
  • 我在发布响应时可以有多个 json 对象,例如:{"status":"ok","filename":"538f057493d55.png"}{"status":"ok","filename":"538f057493d11.png"},现在我需要迭代这些对象并获取文件名值以将它们附加为我的值图片输入
  • @Lukas:但是您拥有它们的数据结构是什么,那是一个数组吗?请发布您收到的整个服务器响应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-22
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
相关资源
最近更新 更多