jquery .each()值是ajax返回后的整个数组

时间:2013-09-10 17:04:54

标签: jquery perl get each

我认为我有一个愚蠢的问题。我觉得很蠢,我把它们各处都用到了。我仍然是Javascript的新手,但我来了。我通过.get()按钮点击将'促销代码ID'传递给perl脚本,我返回一些'产品ID',我想循环这些ID并替换/更新隐藏的输入值。这看起来很简单,但我在一次迭代中的价值就是整个数组?

$.get('./ajax_get_products.pl', { function_name : 'fix_product_dates', promo_id : selected_promo_id }, function(data) {
                    $.each([data], function(i, value) {
                            $('#products_dates :input[id='+value+']').val(output);
                    });
            });

如果我在每个内部发出警报(值),它会显示整个数组。用于测试[data] = [51,52,53]的当前值。所以,我期待警报(值)在每个警报中向我抛出三个警告,其中包含一个整数。我从Perl脚本返回这个(没有选择导致它的工作),我的标题从Perl回来可能是错的吗?我试过了

print "Content-Type: text/html\n\n";
print "Content-Type: text/plain\n\n";

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您正在将data作为$.each()唯一项目的数组传递给我,我想你想要的是遍历data对象

$.get('./ajax_get_products.pl', {
    function_name: 'fix_product_dates',
    promo_id: selected_promo_id
}, function (data) {
    $.each(data, function (i, value) {
        $('#products_dates :input[id=' + value + ']').val(output);
    });
}, 'json');

答案 1 :(得分:1)

您返回的数据是字符串而不是数组。 您可以删除[],然后在逗号上拆分以将数据转换为数组。

但是,如果您有权访问perl脚本,则返回一个JSON字符串,这将更容易使用。

所以返回{“1”:“51”,“2”:“52”,“3”:“53”}

然后你可以在循环之前使用$ .parseJSON(数据)。并删除每次通话中的[]周围数据。