0

我认为我遇到了一个愚蠢的问题。我觉得很愚蠢,我到处都在使用它们。我仍然是 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);
                    });
            });

如果我在每个里面做 alert(value) ,它会显示整个数组。用于测试 [data] = [51, 52, 53] 的当前值。所以,我期待 alert(value) 向我抛出三个警报,每个警报中都有一个整数。我从 Perl 脚本返回这个(没有选择,因为它是为了工作),我的头从 Perl 回来可能是错的吗?我试过了

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

在此先感谢您的帮助。

4

2 回答 2

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');
于 2013-09-10T17:08:49.427 回答
1

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

但是,如果您可以访问 perl 脚本,请返回一个 JSON 字符串,这将更易于使用。

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

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

于 2013-09-10T17:20:11.033 回答